Skip to content

Commit 23dc3d1

Browse files
committed
Define frame-sizing and add meta tag immutability
1 parent 755eab2 commit 23dc3d1

1 file changed

Lines changed: 30 additions & 29 deletions

File tree

css-sizing-4/Overview.bs

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ Overriding Contained Intrinsic Sizes: the 'contain-intrinsic-*' properties</h3>
891891

892892
<pre class=propdef>
893893
Name: contain-intrinsic-width, contain-intrinsic-height, contain-intrinsic-block-size, contain-intrinsic-inline-size
894-
Value: [ auto | from-element ]? [ none | <<length [0,∞]>> ]
894+
Value: auto? [ none | <<length [0,∞]>> ]
895895
Initial: none
896896
Inherited: no
897897
Logical property group: contain-intrinsic-size
@@ -989,22 +989,6 @@ Overriding Contained Intrinsic Sizes: the 'contain-intrinsic-*' properties</h3>
989989
<wpt pathprefix="css/css-contain/">
990990
content-visibility/content-visibility-058.html
991991
</wpt>
992-
993-
: <dfn>from-element</dfn>
994-
:: If ''contain-intrinsic-size/from-element'' is specified
995-
and the element is a [=replaced element=]
996-
with an [=internal layout intrinsic size=],
997-
its [=explicit intrinsic inner size=] in the corresponding axis
998-
is that size.
999-
1000-
Note: Whether a [=replaced element=]
1001-
has an [=internal layout intrinsic size=]
1002-
is defined by the [=document language=].
1003-
In HTML, only <{iframe}>s do so.
1004-
1005-
Issue: Should this apply even when ''contain:layout'' isn't specified?
1006-
1007-
Issue: The name needs further discussion.
1008992
</dl>
1009993

1010994
If an element has an [=explicit intrinsic inner size=] in an axis,
@@ -1032,7 +1016,7 @@ Overriding Contained Intrinsic Sizes: the 'contain-intrinsic-*' properties</h3>
10321016

10331017
<pre class="propdef shorthand">
10341018
Name: contain-intrinsic-size
1035-
Value: [ [ auto | from-element ]? [ none | <<length [0,∞]>> ] ]{1,2}
1019+
Value: [ auto? [ none | <<length [0,∞]>> ] ]{1,2}
10361020
</pre>
10371021

10381022
<wpt>
@@ -1198,7 +1182,17 @@ Interaction With ''overflow: auto''</h4>
11981182
-->
11991183

12001184
<h3 id='responsive-iframes' dfn lt="responsively-sized iframe" export>
1201-
Responsively-sized iframes</h3>
1185+
Responsively-sized iframes: the 'frame-sizing' property</h3>
1186+
1187+
<pre class="propdef">
1188+
Name: frame-sizing
1189+
Value: auto | content-width | content-height | content-block-size | content-inline-size
1190+
Initial: auto
1191+
Applies to: <{iframe}> elements
1192+
Inherited: no
1193+
Computed value: specified keyword
1194+
Animation type: discrete
1195+
</pre>
12021196

12031197
Some [=replaced elements=] can contain "normal" flowed content,
12041198
such as HTML <{iframe}>s.
@@ -1208,7 +1202,7 @@ Responsively-sized iframes</h3>
12081202
to the outside page,
12091203
instead just using a static, predetermined intrinsic size,
12101204
and making their contents scrollable.
1211-
The ''contain-intrinsic-size/from-element'' value of 'contain-intrinsic-size'
1205+
The 'frame-sizing' property
12121206
allows these elements to opt into exposing their actual content size,
12131207
known as their <dfn export>internal layout intrinsic size</dfn>.
12141208

@@ -1218,14 +1212,19 @@ Responsively-sized iframes</h3>
12181212
In HTML, only <{iframe}> elements can have an [=internal layout intrinsic size=],
12191213
and further,
12201214
only when the contained document has also opted in
1221-
via a <code>&lt;meta name=responsize-embedded-sizing></code> element.
1215+
via a <code>&lt;meta name=responsive-embedded-sizing></code> element.
1216+
1217+
The first instance of this meta tag added by the parser can make it opt in.
1218+
If the parser encounters multiple such tags, only the first one is used.
1219+
If the parser closes the <code>&lt;head&gt;</code> without seeing the tag,
1220+
it is frozen as not-set.
12221221

12231222
An <{iframe}> initially doesn't have an [=internal layout intrinsic size=].
12241223
When an <{iframe}>'s internal document is loaded,
1225-
if the required <{meta}> element is present
1226-
at the time of the <code>DOMContentLoaded</code> and <code>load</code> events,
1227-
the <{iframe}>'s [=internal layout intrinsic size=]'s height
1228-
is set to the [=natural height=] of the embedded document.
1224+
if the required <{meta}> element is present,
1225+
the <{iframe}>'s [=internal layout intrinsic size=]'s height or width
1226+
is set to the [=natural size=] of the embedded document as specified by 'frame-sizing'.
1227+
Resizing occurs at the <code>DOMContentLoaded</code> and <code>load</code> events.
12291228
Subsequent changes to content, styling or layout of the embedded document
12301229
do not affect the [=internal layout intrinsic size=].
12311230

@@ -1241,19 +1240,21 @@ Responsively-sized iframes</h3>
12411240

12421241
<pre highlight=css>
12431242
iframe {
1244-
contain-intrinsic-block-size: from-element 150px;
1243+
frame-sizing: content-height;
12451244
}
12461245
</pre>
12471246

1248-
The height of the <{iframe}> will initially be ''150px'',
1247+
The height of the <{iframe}> will initially be the default iframe height (typically ''150px''),
12491248
but will be updated to ''500px'' once the iframe's document loads.
12501249
</div>
12511250

1251+
Issue: Should this apply even when ''contain:size'' isn't specified?
1252+
12521253
In addition,
12531254
the internal document can call {{window/requestResize()|window.requestResize()}};
12541255
if the document still has the required <{meta}> element,
1255-
its [=internal layout intrinsic size=]'s height
1256-
is updated to its new current [=natural height=].
1256+
its [=internal layout intrinsic size=]
1257+
is updated to its new current [=natural size=].
12571258

12581259
Note: If the required <{meta}> element is not present,
12591260
the call throws a {{NotAllowedError}} {{DOMException}} instead.

0 commit comments

Comments
 (0)