重读CSS的尺寸体系【玩转CSS】

举报
叶一一 发表于 2023/05/24 09:33:10 2023/05/24
【摘要】 本文分享CSS中的尺寸体系,虽然尺寸是基础且常用的知识点,但是日常经常用到的尺寸中的属性较为固定,而这篇文章主要是对不常用但是很好用的属性做了进一步介绍。

前情提要

最近重温了一下MDN文档,果然温故而知新。

今天翻到CSS部分,然后发现width和height里,有几个属性值眼熟但是不多,准备深究一下。

尺寸体系

width和height用一句话概括就是:

它们是css中用来控制元素高度和宽度的尺寸属性。

日常开发中,经常会用到这两个属性的部分属性值。

今天着重试验几个不常用的属性值,然后找找使用场景。(我日常确实用到少,不然早就出一篇相关的文章了)

fill-available

这个看MDN的介绍,能看到人一头雾水。

根据文字方向,使用 fill-available 作为行大小或者块大小。

但是根据这个词组翻译一下大致可以猜出来

撑满可用空间

实验中发现,当前元素是块级元素或者行内块元素才起作用。

元素表现

分别为元素的width和height设置了fill-available

.height-fill {
  display: inline-block;
  line-height: 24px;
  height: fill-available;
  height: -webkit-fill-available;
  height: -moz-fill-available;
  height: -moz-available;
  background: #0f6fb8;
}
.width-fill {
  display: inline-block;
  line-height: 24px;
  width: fill-available;
  width: -webkit-fill-available;
  width: -moz-fill-available;
  width: -moz-available;
  background: #0f6fb8;
}
.width-height-fill {
  display: inline-block;
  line-height: 24px;
  height: fill-available;
  height: -webkit-fill-available;
  height: -moz-fill-available;
  height: -moz-available;
  width: fill-available;
  width: -webkit-fill-available;
  width: -moz-fill-available;
  width: -moz-available;
  background: #0f6fb8;
}

设置之后,不难看出为元素设置了fill-available之后,元素表现的像块级元素一样自动撑满空间。

fit-content

根据这个词组翻译一下大致是:

自动收缩到容器的宽度(高度)

元素表现

分别为元素的width和height设置了fit-content

.height-fill {
  background: #0f6fb8;
  height: fit-content;
  height: -webkit-fit-content;
  height: -moz-fit-content;
}
.width-fill {
  background: #0f6fb8;
  width: fit-content;
  width: -webkit-fit-content;
  width: -moz-fit-content;
}
.width-height-fill {
  background: #0f6fb8;
  height: fit-content;
  height: -webkit-fit-content;
  height: -moz-fit-content;
  width: fit-content;
  width: -webkit-fit-content;
  width: -moz-fit-content;
}

设置之后,不难看出为元素设置了fit-content之后,宽度会自适应到子元素最长的宽度值。(高度设置没整明白,有空再查查资料吧)

min-content

元素内容中固有的最小宽度(高度)。

不会以为这么简单就完事了吧,这个属性的表现是典型的"因人而异"。以宽度为例,下面是总结时刻:

  • 有英文时,因为默认情况下英文单词是不换行的,这种情况下,最小宽度是最长的英文单词的宽度。
  • 没有英文但是有图片时,最小宽度是图片呈现的宽度。
  • 只有中文时,最小宽度是单个中文的宽度值。
.width-min {
  background: #0f6fb8;
  width: min-content;
  width: -webkit-min-content;
  width: -moz-min-content;
}

max-content

元素内容中合适的宽度(高度)。

以宽度为例,设置该属性值之后,会适应子元素中最长的宽度。这个属性值没有min-content那么多分类区分,只挑子元素中最长的宽度。

未完待续

其实学完某个知识点之后,除了知道它是什么,我还比较关心怎么用它,实际开发中的应用场景硬猜是比较困难的,好在有大佬已经做了总结。

推荐张鑫旭大神的《理解CSS3 max/min-content及fit-content等width值》,总结的即全面又详细,通俗易懂。

我喜欢创作,每一幅作品都是我将想象用一只叫做“代码”的画笔,绘制而成。

当我寻找新的技术的时候,不是创意枯竭,而是我需要新的色彩。

而这个循序渐进的学习过程,虽然缓慢,但是积少成多、聚沙成塔。



作者:非职业「传道授业解惑」的开发者叶一一简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。