mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
layout: Never stretch indefinite intrinsic keywords other than auto
(#34672)
Consider: ```html <div style="position: relative; width: 50px; height: 50px; border: solid; margin: 5px"> <div style="position: absolute; top: 0; bottom: 0; height: max-content"> <canvas width="25" height="25" style="background: cyan; height: 100%"></canvas> </div> </div> ``` In order to determine the inline min/max-content sizes, we need a tentative block size as the input, which only takes extrinsic values into account. In this case `height: max-content` is intrinsic, so we were treating it as `height: initial`, which would behave as a definite `height: stretch`. Therefore, the canvas was able to resolve its percentage. However, it seems weird to treat an explicitly intrinsic keyword in an extrinsic way, and Blink doesn't do it. So now we treat the tentative block size as indefinite, therefore the percentage behaves as auto. This adds a new test, we were previously failing 6 subtests, now only 3. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
017b12a627
commit
ab270f3d52
5 changed files with 329 additions and 6 deletions
|
@ -627,7 +627,7 @@ impl ToLogicalWithContainingBlock<LogicalRect<Au>> for PhysicalRect<Au> {
|
|||
|
||||
/// The possible values accepted by the sizing properties.
|
||||
/// <https://drafts.csswg.org/css-sizing/#sizing-properties>
|
||||
#[derive(Clone, PartialEq)]
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub(crate) enum Size<T> {
|
||||
/// Represents an `auto` value for the preferred and minimum size properties,
|
||||
/// or `none` for the maximum size properties.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue