diff options
-rw-r--r-- | Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index 6775341179..891db783b3 100644 --- a/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -318,10 +318,13 @@ float BlockFormattingContext::compute_theoretical_height(LayoutState const& stat if (is<ReplacedBox>(box)) { height = compute_height_for_replaced_element(state, verify_cast<ReplacedBox>(box)); } else { - if (box.computed_values().height().is_auto()) + // NOTE: We treat percentage heights as "auto" if the containing block has indefinite height. + if (box.computed_values().height().is_auto() + || (box.computed_values().height().is_percentage() && !state.get(*box.containing_block()).has_definite_height())) { height = compute_auto_height_for_block_level_element(state, box); - else + } else { height = computed_values.height().resolved(box, containing_block_height).to_px(box); + } } auto specified_max_height = computed_values.max_height().resolved(box, containing_block_height).resolved(box); |