You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: css-sizing-4/responsive-iframes-explainer.md
+13-11Lines changed: 13 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Problem description
4
4
5
-
[url](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe) are very useful for sandboxing web content into different documents. The options currently available are:
5
+
[Iframes](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe) are very useful for sandboxing web content into different documents. The options currently available are:
6
6
1. A [same-origin](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) iframe, which provides full style &
7
7
layout isolation, and by-default script isolation. This prevents the parent and child documents from accidentally interfering with each other.
8
8
2. A cross-origin iframe, which additionally provides robust security and privacy against untrusted embedders or embedees.
@@ -14,17 +14,17 @@ This is a problem:
14
14
* From a user's perspective, iframe scrollbars are a worse UX in cases where the iframe contents are important to them and can fit reasonably in the visible viewport without these additional scrollbars.
15
15
* From a developer's perspective, they are forced to use non-trivial script to communicate natural dimensions across frames in order to help the user have better UX without scrollbars.
16
16
17
-
Embedded SVG documents already support responsive layout. *Responsive iframes*add responsive layout to iframes, as long as the embedding and embedded document both opt into do so, thus providing support for responsive layout without losing any of the advantages of iframes in (1) and (2) above.
17
+
Embedded SVG documents (in `<object>`/`<embed>`) already support responsive layout. *Responsive iframes*adds responsive layout to iframes, as long as the embedding and embedded document both opt in to doing so, thus providing support for responsive layout without losing any of the advantages of iframes in (1) and (2) above.
* Many comments and positive reactions on the [issue proposing the feature for HTML](https://github.com/whatwg/html/issues/555), and [the same for CSS](https://github.com/w3c/csswg-drafts/issues/1771).
27
+
* Many comments and positive reactions on the [issue proposing the feature for HTML](https://github.com/whatwg/html/issues/555), and [the same for CSS](https://github.com/w3c/csswg-drafts/issues/1771)
28
28
* Existence of multiple polyfills
29
29
30
30
## Solution
@@ -37,18 +37,19 @@ The double opt-in preserves:
37
37
* Backward compatibility for existing content
38
38
* Privacy and security guarantees of cross-origin content
39
39
40
-
The "one-shot" sizing to natural dimensions avoids:
40
+
The "one-shot" (only at `load` time) sizing to natural dimensions avoids:
41
41
* Performance issues and CLS due to changing iframe sizing (To further mitigatge performance risks, limitations on levels of `<iframe>` nesting may be imposed.)
42
42
* Potential infinite layout loops
43
43
44
44
## Example:
45
45
46
-
The following example wil display an iframe of content `width `300px` (the default) and height `1000px` (the height of the `<div>`),
47
-
plus a 1px border.
46
+
The following example wil display an iframe of content width `300px` (the default) and height `1000px` (the height of the `<div>`),
47
+
plus a `1px` border. Without this feature, the iframe would have been `150px` (the defaut) tall with a vertical scrollbar.
48
48
49
49
Embedding document:
50
50
51
51
```html
52
+
<!doctype HTML>
52
53
<style>
53
54
iframe {
54
55
contain-intrinsic-size: from-element;
@@ -60,16 +61,17 @@ Embedding document:
60
61
61
62
`my-iframe.html`:
62
63
```html
64
+
<!doctype HTML>
63
65
<style>
64
66
* { margin: 0; }
65
67
</style>
66
-
<metaname="responsive-embedded-sizing">
67
-
<divstyle="height: 100px">
68
+
<metaname="responsive-embedded-sizing"></meta>
69
+
<divstyle="height: 100px"></div>
68
70
```
69
71
70
72
## Future extensions
71
73
72
-
A JavaScript API could be added in the future that would allow embedded documents to request relayout in their embedding document context.
74
+
A JavaScript API could be added in the future that would allow embedded documents to request relayout in their embedding document context. This would allow dynamically generated iframe documents to update at times other than `load`.
0 commit comments