diff --git a/Tests/LibWeb/Layout/expected/clearfix.txt b/Tests/LibWeb/Layout/expected/clearfix.txt new file mode 100644 index 0000000000..4d286f46ad --- /dev/null +++ b/Tests/LibWeb/Layout/expected/clearfix.txt @@ -0,0 +1,16 @@ +InitialContainingBlock <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x157 children: not-inline + BlockContainer at (8,8) content-size 784x100 children: not-inline + BlockContainer
at (8,8) content-size 784x100 children: not-inline + BlockContainer <(anonymous)> at (8,8) content-size 784x0 children: inline + TextNode <#text> + BlockContainer at (8,8) content-size 100x100 floating children: not-inline + TextNode <#text> + BlockContainer at (8,108) content-size 784x0 children: not-inline + BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline + TextNode <#text> + BlockContainer at (8,108) content-size 49x49 floating children: not-inline + BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline + TextNode <#text> + BlockContainer <(anonymous)> at (8,108) content-size 784x0 children: inline + TextNode <#text> diff --git a/Tests/LibWeb/Layout/input/clearfix.html b/Tests/LibWeb/Layout/input/clearfix.html new file mode 100644 index 0000000000..b15946a979 --- /dev/null +++ b/Tests/LibWeb/Layout/input/clearfix.html @@ -0,0 +1,23 @@ + +
+
+
+
+
diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index 92198e0f15..e4b6d66ad9 100644 --- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -636,6 +636,8 @@ void BlockFormattingContext::place_block_level_element_in_normal_flow_vertically for (auto* containing_block = child_box.containing_block(); containing_block && containing_block != &root(); containing_block = containing_block->containing_block()) clearance_y_in_containing_block -= m_state.get(*containing_block).offset.y(); + if (clearance_y_in_containing_block > y) + m_y_offset_of_current_block_container = clearance_y_in_containing_block; y = max(y, clearance_y_in_containing_block); float_side.clear(); }