diff options
5 files changed, 109 insertions, 1 deletions
diff --git a/components/layout_2020/flow/float.rs b/components/layout_2020/flow/float.rs index 461b8a322ed..f0230f2ac40 100644 --- a/components/layout_2020/flow/float.rs +++ b/components/layout_2020/flow/float.rs @@ -307,7 +307,7 @@ impl FloatContext { pub fn new(max_inline_size: Length) -> Self { let mut bands = FloatBandTree::new(); bands = bands.insert(FloatBand { - top: Length::zero(), + top: Length::new(-f32::INFINITY), left: None, right: None, }); diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html.ini new file mode 100644 index 00000000000..56def230e36 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html.ini @@ -0,0 +1,2 @@ +[floats-wrap-bfc-with-margin-010.html] + expected: FAIL diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index 7e09fdfeb08..ef8e5f6c76c 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -61965,6 +61965,19 @@ {} ] ], + "floats-wrap-bfc-with-margin-010.html": [ + "1cc9690602fd6b6beb383aef8a80e7ee8be926e3", + [ + null, + [ + [ + "/css/CSS2/floats/floats-wrap-bfc-with-margin-010-ref.html", + "==" + ] + ], + {} + ] + ], "floats-wrap-top-below-bfc-001l.xht": [ "17bec33eb143ce14f13c439e83f433c3fef74fdd", [ @@ -365676,6 +365689,10 @@ "ac45eb30bf43748284a1c7a19061f8df56fa5dca", [] ], + "floats-wrap-bfc-with-margin-010-ref.html": [ + "b29df933ebae5558f63d799907cbef138910dfd5", + [] + ], "floats-wrap-top-below-001l-notref.xht": [ "0953df73d203c1bb3e8d1dba0a3b7a2cde465e18", [] diff --git a/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010-ref.html b/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010-ref.html new file mode 100644 index 00000000000..b29df933eba --- /dev/null +++ b/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010-ref.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<title>CSS Test Reference</title> +<link rel="author" title="Oriol Brufau" href="obrufau@igalia.com"> +<style> +body { + position: relative; +} +.wrapper { + position: absolute; + width: 100px; + border: 5px solid; + top: 75px; +} +.float { + position: absolute; + width: 50px; + height: 50px; + left: 0; + top: 0; + background: cyan; +} +.bfc { + position: absolute; + height: 50px; + background: green; +} +</style> +<div class="wrapper" style="left: 10px; height: 50px"> + <div class="float"></div> + <div class="bfc" style="width: 50px; left: 0; top: -75px"></div> +</div> +<div class="wrapper" style="left: 140px; height: 50px"> + <div class="float"></div> + <div class="bfc" style="width: 75px; left: 0; top: -75px"></div> +</div> +<div class="wrapper" style="left: 270px; height: 50px"> + <div class="float"></div> + <div class="bfc" style="width: 50px; left: 50px; top: -25px"></div> +</div> +<div class="wrapper" style="left: 400px; height: 100px"> + <div class="float"></div> + <div class="bfc" style="width: 75px; left: 0px; top: 50px"></div> +</div> diff --git a/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html b/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html new file mode 100644 index 00000000000..1cc9690602f --- /dev/null +++ b/tests/wpt/tests/css/CSS2/floats/floats-wrap-bfc-with-margin-010.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<title>CSS Test: Float followed by a BFC root with a negative margin-top</title> +<link rel="author" title="Oriol Brufau" href="obrufau@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css2/#floats"> +<link rel="match" href="floats-wrap-bfc-with-margin-010-ref.html"> +<meta name="assert" content=" + If the negative margin places the BFC root entirely above the float, + then they don't overlap so we are done. + If the negative margin is not enough to prevent them from overlapping, + then the BFC root needs to be placed adjacent to the float if there + is enough available space, or be cleared below the float."> +<style> +.wrapper { + float: left; + width: 100px; + border: 5px solid; + margin: 75px 10px; +} +.float { + float: left; + width: 50px; + height: 50px; + background: cyan; +} +.bfc { + overflow: hidden; + height: 50px; + background: green; +} +</style> +<div class="wrapper"> + <div class="float"></div> + <div class="bfc" style="margin-top: -75px; width: 50px"></div> +</div> +<div class="wrapper"> + <div class="float"></div> + <div class="bfc" style="margin-top: -75px; width: 75px"></div> +</div> +<div class="wrapper"> + <div class="float"></div> + <div class="bfc" style="margin-top: -25px; width: 50px"></div> +</div> +<div class="wrapper"> + <div class="float"></div> + <div class="bfc" style="margin-top: -25px; width: 75px"></div> +</div> |