62 lines
1.9 KiB
HTML
62 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>Cyclic percentages in min-width and min-height</title>
|
|
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#cyclic-percentage-contribution">
|
|
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10969">
|
|
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
|
|
|
<style>
|
|
#outer {
|
|
display: inline-block;
|
|
border: 5px solid;
|
|
padding: 3px;
|
|
}
|
|
#inner {
|
|
min-width: calc(100px + 50%);
|
|
min-height: calc(100px + 50%);
|
|
border: 2px solid cyan;
|
|
}
|
|
</style>
|
|
|
|
<div id="outer">
|
|
<div id="inner"></div>
|
|
</div>
|
|
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
const innerBorder = 4;
|
|
const outerPadding = 6;
|
|
const bp = innerBorder + outerPadding;
|
|
|
|
// Intrinsic contributions should treat cyclic percentages equally in both axes.
|
|
test(
|
|
() => assert_equals(outer.clientWidth, outer.clientHeight),
|
|
"Axis consistency of intrinsic contributions",
|
|
);
|
|
|
|
// The spec says that the intrinsic size contributions should resolve cyclic percentages
|
|
// in min size properties against zero, so here we should expect 110px.
|
|
// However, most browsers just ignore the mininum in that case, resulting in 10px.
|
|
// See https://github.com/w3c/csswg-drafts/issues/10969
|
|
test(
|
|
() => assert_in_array(outer.clientWidth, [0 + bp, 100 + bp]),
|
|
"Intrinsic contribution for width",
|
|
);
|
|
test(
|
|
() => assert_in_array(outer.clientHeight, [0 + bp, 100 + bp]),
|
|
"Intrinsic contribution for height",
|
|
);
|
|
|
|
// Regardless of how browsers treat cyclic percentages, once the size of #outer is known,
|
|
// #inner should re-resolve its inline-axis percentage against the containing block,
|
|
// but not re-resolve its block-axis percentage.
|
|
test(
|
|
() => assert_equals(inner.clientWidth, 100 + 0.5 * (outer.clientWidth - outerPadding)),
|
|
"Final size for width",
|
|
);
|
|
test(
|
|
() => assert_equals(inner.clientHeight, outer.clientHeight - bp),
|
|
"Final size for height",
|
|
);
|
|
</script>
|