diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index f7a21b01b4..53fa115123 100644 --- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -506,9 +506,10 @@ void BlockFormattingContext::place_block_level_non_replaced_element_in_normal_fl } }; - if (computed_values.clear() == CSS::Clear::Left || computed_values.clear() == CSS::Clear::Both) + // Flex-items don't float and also don't clear. + if ((computed_values.clear() == CSS::Clear::Left || computed_values.clear() == CSS::Clear::Both) && !child_box.is_flex_item()) clear_floating_boxes(m_left_floating_boxes); - if (computed_values.clear() == CSS::Clear::Right || computed_values.clear() == CSS::Clear::Both) + if ((computed_values.clear() == CSS::Clear::Right || computed_values.clear() == CSS::Clear::Both) && !child_box.is_flex_item()) clear_floating_boxes(m_right_floating_boxes); child_box.set_offset(x, y); diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp index 81be66ef25..0c15350a1d 100644 --- a/Userland/Libraries/LibWeb/Layout/Node.cpp +++ b/Userland/Libraries/LibWeb/Layout/Node.cpp @@ -169,6 +169,9 @@ bool Node::is_floating() const { if (!has_style()) return false; + // flex-items don't float. + if (is_flex_item()) + return false; return computed_values().float_() != CSS::Float::None; }