Jen 刚刚 发推文 关于最新的 Safari 技术预览版如何包含 aspect-ratio
。 看起来 Chrome 和 Firefox 都在标志后面拥有它,所以随着 Safari 加入其中,我们很快就会拥有它。
我之前玩过它。 它很棒,而且非常需要。 有 创建 `aspect-ratio` 框的方法,但它们主要围绕着“填充技巧”。
Dave 很高兴能从监狱里释放出来
一旦我们可以依靠它,FitVids(我在我制作的每个网站上都以某种形式使用它)可以完全消失,转而使用直接应用于元素(通常是视频中的<iframe>
)的一小部分 CSS。
FitVids 2021
我仍然想知道为什么这不是用一个相对于元素宽度(我们称之为 elw)的可靠单位来完成的,就像这样
height: 60elw;
使用新属性来代替它有什么优势吗?
我认为优势在于大多数视频都是以定义的“标准比例”拍摄的,比例也是孩子们在基础数学中学习的常见概念。 使用它而不是一个独特的单位度量只是减少了神秘感,使语言更加透明。
我的猜测是宽度和高度旨在作为对外部维度的引用——最近的相对父元素的宽度/高度——因此能够将它们设置为相对于该单位本身打破了该约定。 它还开辟了矛盾声明的可能性,这必然会导致混乱和不一致。 拥有一个单独的声明,可以被声明的宽度和高度值覆盖,确保如果元素被过度定义,不会破坏任何东西,并且不会改变任何现有属性的约定。
不同的视频具有不同的纵横比。 我不认为我们可以简单地将
aspect-ratio: 16/9;
应用于来自 Youtube 和 Vimeo 的所有视频嵌入,除非你想在垂直视频上看到大的黑条。可以尝试这样做吗?
width: 100%;
height: auto;
aspect-ratio: attr(width) / attr(height);
可以很容易地添加一个内联样式
style="aspect-ratio:x/y;"
小心,Chris!想想如果你人们不再搜索填充纵横比技巧,你会损失多少页面浏览量!
我们在最近的时事通讯中也思考了所有这些:https://css-tricks.cn/newsletter/233-css-as-a-content-api-no-but-also-sort-of-yes/
如果我们能得到类型化的属性,比如
attr(width number)
,我们最终可能会做到这将是所有现有 iframe(具有这些属性)的不错设置。
但是,使用自定义属性来覆盖它难道不好吗?
就像
<iframe style="--aspect-ratio: 1/1;" ... >
然后aspect-ratio: var(--aspect-ratio, 16 / 9);
。