diff --git a/Libraries/LibWeb/Layout/Node.cpp b/Libraries/LibWeb/Layout/Node.cpp index 802942e556e..f929f52e132 100644 --- a/Libraries/LibWeb/Layout/Node.cpp +++ b/Libraries/LibWeb/Layout/Node.cpp @@ -76,6 +76,9 @@ bool Node::is_out_of_flow(FormattingContext const& formatting_context) const bool Node::can_contain_boxes_with_position_absolute() const { + if (!is(*this)) + return false; + if (computed_values().position() != CSS::Positioning::Static) return true; diff --git a/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt b/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt new file mode 100644 index 00000000000..7633449e522 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/abspos-static-position-containing-block-inline-situation.txt @@ -0,0 +1,16 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x18 [BFC] children: inline + InlineNode + frag 0 from BlockContainer start: 0, length: 0, rect: [8,13 0x0] baseline: 0 + frag 1 from TextNode start: 0, length: 5, rect: [8,0 36.84375x18] baseline: 13.796875 + "hello" + BlockContainer
at (8,13) content-size 0x0 inline-block [BFC] children: not-inline + BlockContainer
at (8,0) content-size 36.84375x18 positioned [BFC] children: inline + TextNode <#text> + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x18] + PaintableWithLines (InlineNode) + PaintableWithLines (BlockContainer
) [8,13 0x0] + PaintableWithLines (BlockContainer
) [8,0 36.84375x18] + TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/input/abspos-static-position-containing-block-inline-situation.html b/Tests/LibWeb/Layout/input/abspos-static-position-containing-block-inline-situation.html new file mode 100644 index 00000000000..57e44077d0e --- /dev/null +++ b/Tests/LibWeb/Layout/input/abspos-static-position-containing-block-inline-situation.html @@ -0,0 +1,12 @@ +
hello