mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 22:48:11 +00:00
LibWeb: Support flex items with calc() main size containing percentages
If a flex item's main size is a CSS calc() value that resolves to a length and contains a percentage, we can only resolve it when we have the corresponding reference size for the containing block.
This commit is contained in:
parent
d6c3cbd958
commit
06617a982e
3 changed files with 38 additions and 3 deletions
|
@ -0,0 +1,15 @@
|
|||
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
|
||||
BlockContainer <html> at (0,0) content-size 800x69.34375 [BFC] children: not-inline
|
||||
Box <body.pink> at (8,8) content-size 784x53.34375 flex-container(row) [FFC] children: not-inline
|
||||
Box <div.orange> at (8,8) content-size 194.71875x53.34375 flex-container(row) flex-item [FFC] children: not-inline
|
||||
BlockContainer <div.lime> at (8,8) content-size 87.358999x53.34375 flex-item [BFC] children: inline
|
||||
line 0 width: 74.75, height: 17.46875, bottom: 17.46875, baseline: 13.53125
|
||||
frag 0 from TextNode start: 0, length: 9, rect: [8,8 74.75x17.46875]
|
||||
"This is a"
|
||||
line 1 width: 71.828125, height: 17.9375, bottom: 35.40625, baseline: 13.53125
|
||||
frag 0 from TextNode start: 10, length: 8, rect: [8,25 71.828125x17.46875]
|
||||
"bunch of"
|
||||
line 2 width: 32.140625, height: 18.40625, bottom: 53.34375, baseline: 13.53125
|
||||
frag 0 from TextNode start: 19, length: 4, rect: [8,42 32.140625x17.46875]
|
||||
"text"
|
||||
TextNode <#text>
|
|
@ -0,0 +1,17 @@
|
|||
<!doctype html><style>
|
||||
html {
|
||||
background: white;
|
||||
}
|
||||
body {
|
||||
background: pink;
|
||||
display: flex;
|
||||
}
|
||||
.orange {
|
||||
background: orange;
|
||||
display: flex;
|
||||
}
|
||||
.lime {
|
||||
background: lime;
|
||||
width: calc(50% - 10px);
|
||||
}
|
||||
</style><body class=pink><div class=orange><div class=lime>This is a bunch of text
|
|
@ -623,10 +623,13 @@ void FlexFormattingContext::determine_flex_base_size_and_hypothetical_main_size(
|
|||
|
||||
if (flex_basis.length_percentage->is_calculated()) {
|
||||
auto const& calc_value = *flex_basis.length_percentage->calculated();
|
||||
if (calc_value.resolves_to_length())
|
||||
return true;
|
||||
if (calc_value.resolves_to_percentage() || (calc_value.resolves_to_length() && calc_value.contains_percentage()))
|
||||
if (calc_value.resolves_to_percentage())
|
||||
return can_resolve_percentages;
|
||||
if (calc_value.resolves_to_length()) {
|
||||
if (calc_value.contains_percentage())
|
||||
return can_resolve_percentages;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
VERIFY(flex_basis.length_percentage->is_percentage());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue