зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1513959 - Make <input type=range> deal with "percentage inline-size implies zero min-content size" properly. r=dholbert
This commit is contained in:
Родитель
29cb3d46ea
Коммит
ecdcceaf6a
|
@ -741,6 +741,13 @@ LogicalSize nsRangeFrame::ComputeAutoSize(
|
|||
}
|
||||
|
||||
nscoord nsRangeFrame::GetMinISize(gfxContext* aRenderingContext) {
|
||||
auto pos = StylePosition();
|
||||
auto wm = GetWritingMode();
|
||||
if (pos->ISize(wm).HasPercent()) {
|
||||
// https://drafts.csswg.org/css-sizing-3/#percentage-sizing
|
||||
// https://drafts.csswg.org/css-sizing-3/#min-content-zero
|
||||
return nsLayoutUtils::ResolveToLength<true>(pos->ISize(wm), nscoord(0));
|
||||
}
|
||||
return GetPrefISize(aRenderingContext);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: INPUT type=range percent intrinsic inline-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.i {
|
||||
min-width: 0;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mi {
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
width: -moz-max-content;
|
||||
width: max-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
.n {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
|
||||
.outerFlex {
|
||||
display: flex;
|
||||
width: 100px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.innerFlex {
|
||||
display: grid;
|
||||
border: 1px solid pink;
|
||||
}
|
||||
.innerFlex > input {
|
||||
min-width: 0;
|
||||
justify-self: stretch;
|
||||
background: yellow;
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="width:30px"><div style="width:28px">
|
||||
<input type="range" class="i" style="width:14px; margin-right:0">
|
||||
</div></div>
|
||||
|
||||
<div style="width:200px"><div style="">
|
||||
<input type="range" class="i" style="max-width:50%">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:4px">
|
||||
<input type="range" class="i" style="width:2px;">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i" style="width:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i" style="width:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i min-auto" style="width:15px">
|
||||
</div>
|
||||
|
||||
<div style="width:30px"><div style="width:28px;">
|
||||
<input type="range" class="i n" style="width:14px; margin-right:0">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:4px">
|
||||
<input type="range" class="i n" style="width:2px;">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i n" style="width:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i n" style="width:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i n min-auto" style="width:15px">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="mi">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="mi n">
|
||||
</div></div>
|
||||
|
||||
<div style="width:30px"><div style="width:-moz-max-content;width:max-content">
|
||||
<input type="range" class="mi n" style="width:50%">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="width:30px; grid-template-columns:15px">
|
||||
<input type="range" class="mi n min-auto">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="outerFlex">
|
||||
<div class="innerFlex">
|
||||
<input type="range">
|
||||
</div>
|
||||
abc
|
||||
</div>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,169 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test: INPUT type=range percent intrinsic inline-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#min-content-zero">
|
||||
<link rel="match" href="range-percent-intrinsic-size-1-ref.html">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.i {
|
||||
width: 50%;
|
||||
min-width: -moz-min-content;
|
||||
min-width: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mi {
|
||||
max-width: 50%;
|
||||
min-width: -moz-min-content;
|
||||
min-width: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.i.min-auto, input.mi.min-auto {
|
||||
min-width: auto;
|
||||
}
|
||||
|
||||
.n {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
|
||||
.outerFlex {
|
||||
display: flex;
|
||||
width: 100px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.innerFlex {
|
||||
display: flex;
|
||||
border: 1px solid pink;
|
||||
}
|
||||
.innerFlex > input {
|
||||
width: 50%;
|
||||
flex: 1;
|
||||
background: yellow;
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="i">
|
||||
</div></div>
|
||||
|
||||
<div style="width:200px"><div>
|
||||
<input type="range" class="i">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="i">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="i">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="i">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="i min-auto">
|
||||
</div>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="i n">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="i n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="i n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="i n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="i n min-auto">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="mi">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="mi">
|
||||
</div>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="mi n">
|
||||
</div></div>
|
||||
|
||||
<div style="width:30px"><div>
|
||||
<input type="range" class="mi n min-auto">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="mi n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(auto,30px)">
|
||||
<input type="range" class="mi n min-auto">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div class="outerFlex">
|
||||
<div class="innerFlex">
|
||||
<input type="range">
|
||||
</div>
|
||||
abc
|
||||
</div>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,136 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: INPUT type=range percent intrinsic block-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.b {
|
||||
min-height: 0;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mb {
|
||||
min-height: 0;
|
||||
max-height: 100%;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
.n {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
input[orient="vertical"] {
|
||||
-webkit-appearance: slider-vertical;
|
||||
-webkit-appearance: range;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b n" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: 4px / auto">
|
||||
<input type="range" class="mb" orient="vertical" style="height:2px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb n" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: 4px / auto">
|
||||
<input type="range" class="mb n" orient="vertical" style="height:2px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,145 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test: INPUT type=range percent intrinsic block-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#min-content-zero">
|
||||
<link rel="match" href="range-percent-intrinsic-size-2-ref.html">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.b {
|
||||
height: 50%;
|
||||
min-height: -moz-min-content;
|
||||
min-height: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mb {
|
||||
max-height: 50%;
|
||||
min-height: -moz-min-content;
|
||||
min-height: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.b.min-auto, input.mb.min-auto, {
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.n {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
input[orient="vertical"] {
|
||||
-webkit-appearance: slider-vertical;
|
||||
-webkit-appearance: range;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b n" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="b n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b n min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb n" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="mb n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="mb n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb n" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb n min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
|
||||
</body></html>
|
Загрузка…
Ссылка в новой задаче