mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-28 18:17:29 +09:00
Bug 958714 Remove special case for flex & grid items' percent block-axis margin/padding resolution, to align with other browsers
This commit is contained in:
parent
8ba429e41d
commit
a99820e3ab
8 changed files with 30 additions and 51 deletions
|
|
@ -2142,14 +2142,11 @@ OffsetPercentBasis(const nsIFrame* aFrame,
|
||||||
WritingMode aWM,
|
WritingMode aWM,
|
||||||
const LogicalSize& aContainingBlockSize)
|
const LogicalSize& aContainingBlockSize)
|
||||||
{
|
{
|
||||||
|
// XXX The next patch in this series will get rid of this function and have
|
||||||
|
// the upstream/downstream code just work with the one nscoord value that
|
||||||
|
// we'll be dealing with now (which is aContainingBlockSize.ISize(aWM)).
|
||||||
LogicalSize offsetPercentBasis = aContainingBlockSize;
|
LogicalSize offsetPercentBasis = aContainingBlockSize;
|
||||||
if (MOZ_LIKELY(!aFrame->GetParent() ||
|
offsetPercentBasis.BSize(aWM) = offsetPercentBasis.ISize(aWM);
|
||||||
!aFrame->GetParent()->IsFlexOrGridContainer())) {
|
|
||||||
offsetPercentBasis.BSize(aWM) = offsetPercentBasis.ISize(aWM);
|
|
||||||
} else if (offsetPercentBasis.BSize(aWM) == NS_AUTOHEIGHT) {
|
|
||||||
offsetPercentBasis.BSize(aWM) = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return offsetPercentBasis;
|
return offsetPercentBasis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,18 +67,18 @@ b40 {
|
||||||
width: 42px;
|
width: 42px;
|
||||||
/* This margin-left is 20% of 98px-wide grid area */
|
/* This margin-left is 20% of 98px-wide grid area */
|
||||||
margin-left: 19.6px;
|
margin-left: 19.6px;
|
||||||
/* This padding-bottom is 10% of 47.5px tall grid area */
|
/* This padding-bottom is 10% of 98px wide grid area */
|
||||||
/* This padding-left is 30% of 98px wide grid area */
|
/* This padding-left is 30% of 98px wide grid area */
|
||||||
padding: 1px 3px 4.75px 29.4px;
|
padding: 1px 3px 9.8px 29.4px;
|
||||||
}
|
}
|
||||||
.v.r {
|
.v.r {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
width: 42px;
|
width: 42px;
|
||||||
/* This margin-left is 20% of 54px-wide grid area */
|
/* This margin-left is 20% of 54px-wide grid area */
|
||||||
margin-left: 10.8px;
|
margin-left: 10.8px;
|
||||||
/* This padding-bottom is 10% of 102.5px tall grid area */
|
/* This padding-bottom is 10% of 54px wide grid area */
|
||||||
/* This padding-left is 30% of 54px wide grid area */
|
/* This padding-left is 30% of 54px wide grid area */
|
||||||
padding: 1px 3px 10.25px 16.2px;
|
padding: 1px 3px 5.4px 16.2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.r { position:relative; }
|
.r { position:relative; }
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
|
||||||
}
|
}
|
||||||
.p { padding:2px 3px; }
|
.p { padding:2px 3px; }
|
||||||
.m { margin:2px 3px; }
|
.m { margin:2px 3px; }
|
||||||
.c1.p,.c2.p { padding:5px 9px; }
|
.c1.p,.c2.p { padding:6px 9px; }
|
||||||
.c1.m,.c2.m { margin:5px 9px; }
|
.c1.m,.c2.m { margin:6px 9px; }
|
||||||
.b { border:solid black; }
|
.b { border:solid black; }
|
||||||
|
|
||||||
#t1 { width:50px; height: 20px; }
|
#t1 { width:50px; height: 20px; }
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p { padding:10% 6%; }
|
.p { padding:4% 6%; }
|
||||||
.m { margin:10% 6%; }
|
.m { margin:4% 6%; }
|
||||||
.b { border:solid black; }
|
.b { border:solid black; }
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
|
||||||
|
|
||||||
.p { padding:2px 3px; }
|
.p { padding:2px 3px; }
|
||||||
.m { margin:2px 3px; }
|
.m { margin:2px 3px; }
|
||||||
.c1.p,.c2.p { padding:5px 9px; }
|
.c1.p,.c2.p { padding:6px 9px; }
|
||||||
.c1.m,.c2.m { margin:5px 9px; }
|
.c1.m,.c2.m { margin:6px 9px; }
|
||||||
.b { border:solid black; }
|
.b { border:solid black; }
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ skip-if(Android) fuzzy-if(winWidget,1,32) == grid-placement-auto-implicit-001.ht
|
||||||
== vrl-grid-placement-auto-row-sparse-001.html vrl-grid-placement-auto-row-sparse-001-ref.html
|
== vrl-grid-placement-auto-row-sparse-001.html vrl-grid-placement-auto-row-sparse-001-ref.html
|
||||||
== grid-relpos-items-001.html grid-relpos-items-001-ref.html
|
== grid-relpos-items-001.html grid-relpos-items-001-ref.html
|
||||||
== grid-item-sizing-percent-001.html grid-item-sizing-percent-001-ref.html
|
== grid-item-sizing-percent-001.html grid-item-sizing-percent-001-ref.html
|
||||||
== grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html
|
fails == grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html # bug 1434397
|
||||||
== grid-item-sizing-percent-003.html grid-item-sizing-percent-003-ref.html
|
== grid-item-sizing-percent-003.html grid-item-sizing-percent-003-ref.html
|
||||||
== grid-item-sizing-percent-004.html grid-item-sizing-percent-004-ref.html
|
== grid-item-sizing-percent-004.html grid-item-sizing-percent-004-ref.html
|
||||||
== grid-item-sizing-px-001.html grid-item-sizing-percent-001-ref.html
|
== grid-item-sizing-px-001.html grid-item-sizing-percent-001-ref.html
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/
|
http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
-->
|
-->
|
||||||
<!-- Reference case - identical to the testcase, but with with the flex items'
|
<!-- Reference case - identical to the testcase, but with with the flex items'
|
||||||
vertical margin and padding values set to 0 by default, and then set to
|
margin and padding values set to explicit pixel values.
|
||||||
specific pixel values for the items that have a 50px percent-basis.
|
|
||||||
-->
|
-->
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
|
|
@ -21,27 +20,10 @@
|
||||||
}
|
}
|
||||||
div.height50 { height: 50px; }
|
div.height50 { height: 50px; }
|
||||||
|
|
||||||
.marginA { margin: 0 8% 0 4%; }
|
.marginA { margin: 20px 16px 12px 8px; }
|
||||||
.marginB { margin: 0 10% 0 14%; }
|
.marginB { margin: 16px 20px 24px 28px; }
|
||||||
.paddingA { padding: 0 6% 0 2%; }
|
.paddingA { padding: 16px 12px 8px 4px; }
|
||||||
.paddingB { padding: 0 8% 0 12%; }
|
.paddingB { padding: 12px 16px 20px 24px; }
|
||||||
|
|
||||||
div.height50 > .marginA {
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
}
|
|
||||||
div.height50 > .marginB {
|
|
||||||
margin-top: 4px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
}
|
|
||||||
div.height50 > .paddingA {
|
|
||||||
padding-top: 4px;
|
|
||||||
padding-bottom: 2px;
|
|
||||||
}
|
|
||||||
div.height50 > .paddingB {
|
|
||||||
padding-top: 3px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.child1 {
|
div.child1 {
|
||||||
flex: none;
|
flex: none;
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,17 @@
|
||||||
Any copyright is dedicated to the Public Domain.
|
Any copyright is dedicated to the Public Domain.
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/
|
http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
-->
|
-->
|
||||||
<!-- Testcase with percent-valued padding and/or margin on flex items. The spec
|
<!-- Testcase with percent-valued padding and/or margin on flex items.
|
||||||
says that percentage values on padding/margin-top and -bottom should be
|
The spec allows these to be resolved against the flex container's
|
||||||
resolved against the flex container's height (not its width, as would
|
inline size (regardless of which axis the percent padding/margin is in).
|
||||||
be the case in a block).
|
|
||||||
-->
|
-->
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<title>CSS Test: Testing percent-valued padding and margin on flex items</title>
|
<title>CSS Test: Testing percent-valued padding and margin on flex items</title>
|
||||||
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/>
|
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/>
|
||||||
<link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#layout-algorithm"/>
|
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#item-margins"/>
|
||||||
<link rel="match" href="flexbox-mbp-horiz-004-ref.xhtml"/>
|
<link rel="match" href="flexbox-mbp-horiz-004-ref.xhtml"/>
|
||||||
<style>
|
<style>
|
||||||
div { border: 0; }
|
|
||||||
div.flexbox {
|
div.flexbox {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -52,8 +50,9 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Flex container is auto-height - vertical margin and padding should
|
<!-- Flex container is auto-height - this shouldn't impact percent
|
||||||
resolve to 0, since they don't have anything to resolve % against. -->
|
margin/padding resolution, since they resolve against container's
|
||||||
|
inline-size, i.e. its width in this case. -->
|
||||||
<div class="flexbox"
|
<div class="flexbox"
|
||||||
><div class="child1 paddingA"><div class="filler"/></div
|
><div class="child1 paddingA"><div class="filler"/></div
|
||||||
><div class="child2 paddingB"><div class="filler"/></div
|
><div class="child2 paddingB"><div class="filler"/></div
|
||||||
|
|
@ -61,8 +60,9 @@
|
||||||
><div class="child2 marginB"></div
|
><div class="child2 marginB"></div
|
||||||
></div>
|
></div>
|
||||||
|
|
||||||
<!-- Flex container has height: 50px - vertical margin and padding should
|
<!-- Flex container has height: 50px - again, this shouldn't impact percent
|
||||||
resolve % values against that. -->
|
margin/padding resolution, since they resolve against container's
|
||||||
|
inline-size, i.e. its width in this case. -->
|
||||||
<div class="flexbox height50"
|
<div class="flexbox height50"
|
||||||
><div class="child1 paddingA"><div class="filler"/></div
|
><div class="child1 paddingA"><div class="filler"/></div
|
||||||
><div class="child2 paddingB"><div class="filler"/></div
|
><div class="child2 paddingB"><div class="filler"/></div
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue