目录
单独在元素上使用aspect-ratio将根据自动宽度计算高度。
如果内容超出宽高比,元素仍会扩展。
如果元素具有高度或宽度中的一个,则根据宽高比计算另一个
如果元素同时具有高度和宽度,则忽略aspect-ratio
使用值函数
也许将aspect-ratio视为确定元素大小的最弱方法会有所帮助?
首页 web前端 css教程 第一次看`

第一次看`

Apr 05, 2025 am 09:57 AM

A First Look at `aspect-ratio`

CSS迎来了一个影响盒子大小的新属性——aspect-ratio!这可是个大事件。虽然已经有很多方法可以创建指定宽高比的盒子(我认为基于自定义属性的解决方案是最好的),但没有一种方法特别直观,也肯定不如声明单个属性那样简单。

随着aspect-ratio属性(MDN,不要与媒体查询版本混淆)即将到来,我想研究一下它的工作原理,并尝试理解它。

感谢Una让我首先看到了这个属性,它确实引起了很多人的兴趣。以下是我的一些尝试。

单独在元素上使用aspect-ratio将根据自动宽度计算高度。

不设置宽度,元素仍然具有自然的自动宽度。因此,高度可以根据宽高比和渲染宽度计算得出。

.el {
  aspect-ratio: 16 / 9;
}
登录后复制

如果内容超出宽高比,元素仍会扩展。

在这种情况下,宽高比将被忽略,这实际上很好。这就是为什么伪元素策略对于宽高比很流行的原因,因为它在内容过多时不会导致危险的数据丢失或尴尬的重叠。

但是,如果您想要将高度限制在宽高比内,可以通过添加min-height: 0;来实现:

如果元素具有高度或宽度中的一个,则根据宽高比计算另一个

因此,aspect-ratio基本上是在您只有一个维度时设置另一个维度的方法。

如果元素同时具有高度和宽度,则忽略aspect-ratio

显式的高度和宽度的组合比宽高比“更强”。

考虑min-*max-*

宽度、最小宽度和最大宽度(或高度版本)之间总是存在一些张力。其中一个总是“获胜”。通常这很直观。

如果您设置width: 100px;min-width: 200px;,则min-width将获胜。因此,min-width要么被忽略(因为您已经超过了它),要么获胜。max-width也是如此:如果您设置width: 100px;max-width: 50px;,则max-width将获胜。因此,max-width要么被忽略(因为您已经低于它),要么获胜。

看起来这种普遍的直觉在这里也适用:min-*max-*属性要么获胜,要么无关紧要。如果它们获胜,则会破坏宽高比。

.el {
  aspect-ratio: 1 / 4;
  height: 500px;

  /* 被忽略,因为宽度计算为 125px */
  /* min-width: 100px; */

  /* 获胜,使宽高比为 1 / 2 */
  /* min-width: 250px; */
}
登录后复制

使用值函数

在流体情况下或任何时候您基本上事先不知道一个维度的情况下,宽高比总是最有用的。但即使您不知道,您也经常会对事物施加约束。例如,50% 的宽度很好,但您只想让它缩小到 200px。您可以使用width: max(50%, 200px);。或者使用clamp(200px, 50%, 400px);在两侧施加约束。

这看起来很直观:

.el {
  aspect-ratio: 4 / 3;
  width: clamp(200px, 50%, 400px);
}
登录后复制

但是,假设您遇到了最小值 200px,然后应用了 300px 的min-widthmin-width获胜。它仍然很直观,但由于涉及许多属性、函数和值,因此会让人感到困惑。

也许将aspect-ratio视为确定元素大小的最弱方法会有所帮助?

它永远不会胜过任何其他大小信息,但如果该维度没有其他可用信息,它将始终执行其大小调整。

以上是第一次看`的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

See all articles