diff --git a/Userland/Libraries/LibWeb/Layout/LayoutState.cpp b/Userland/Libraries/LibWeb/Layout/LayoutState.cpp index 40b699d195a..e245c2459de 100644 --- a/Userland/Libraries/LibWeb/Layout/LayoutState.cpp +++ b/Userland/Libraries/LibWeb/Layout/LayoutState.cpp @@ -220,14 +220,16 @@ void LayoutState::UsedValues::set_node(NodeWithStyleAndBoxModelMetrics& node, Us } if (size.is_length() && size.length().is_calculated()) { - if (width && size.length().calculated_style_value()->contains_percentage() && containing_block_has_definite_size) { + if (size.length().calculated_style_value()->contains_percentage()) { + if (!containing_block_has_definite_size) + return false; auto& calc_value = *size.length().calculated_style_value(); - auto containing_block_width_as_length = CSS::Length::make_px(containing_block_used_values->content_width()); - resolved_definite_size = calc_value.resolve_length_percentage(node, containing_block_width_as_length).value_or(CSS::Length::make_auto()).to_px(node); - return false; + auto containing_block_size_as_length = width + ? CSS::Length::make_px(containing_block_used_values->content_width()) + : CSS::Length::make_px(containing_block_used_values->content_height()); + resolved_definite_size = calc_value.resolve_length_percentage(node, containing_block_size_as_length).value_or(CSS::Length::make_auto()).to_px(node); + return true; } - if (size.length().calculated_style_value()->contains_percentage()) - return false; resolved_definite_size = size.length().to_px(node); return true; }