惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
D
Docker
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
U
Unit 42

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
深入理解CSS的width:auto « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2018-07-23 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=7819
本文可全文转载,但需要保留原作者和出处,摘要引流则随意。

一、深藏不露的width:auto

本节内容选自《CSS世界》第3.2.1的引言部分。

我们应该都知道,width的默认值是'auto''auto'由于是默认值,出镜率不高,但是,却是个深藏不露的家伙,包含了至少下面4种不同的宽度表现:

  1. 充分利用可用空间

    比方说,<div>, <p>这些元素的宽度默认是100%于父级容器的。这种充分利用可用空间的行为还有个专有名字,叫做"fill-available"。实际上,对于inline-block水平的元素,也会存在充分利用可用空间的场景,就是里面元素内容已经超过一行,宽度表现大于容器宽度的时候。

  2. 收缩与包裹

    典型代表就是浮动,绝对定位,inline-block水平元素或table表格,英文称为“shrink-to-fit”,直译为“收缩到合适”,有那么点意思,但不够形象,我自己一直把这种现象称为“包裹性”。CSS3中的"fit-content"指的就是这种宽度表现。

  3. 收缩到最小

    这个最容易出现在table-layoutauto的表格中,想必有经验的小伙伴一定见过下面这样一柱擎天的盛况的吧!

    大家空间都不够的时候,文字能断的就断,中文是随便断的,英文单词不能断。于是乎,第一列被无情地每个字都断掉,形成一柱擎天。这种行为称之为“preferred minimum width”“或者“minimum content width”。后来还有了一个更加规范好听的名字"min-content"

  4. 超出容器限制

    上面1~3情况,除非有明确的width相关设置,否则尺寸都不会主动超过父级容器宽度的,但是,存在一些特殊情况,例如,连续的英文数字,好长好长;或者内联元素被设置了white-space:nowrap,则表现为“恰如一江春水向东流,流到断崖也不回头”。

    例如下面的CSS代码:

    .father {
      width: 150px;
      background-color: #cd0000;
      white-space: nowrap;
    }
    .child {
      display: inline-block;
      background-color: #f0f3f9;
    }

    结果:

    子元素即保持了inline-block元素的收缩特性,同时最大内容宽度,直接无视了父级容器的宽度限制。这种现象后来就有了专门的属性值描述,叫做"max-content",了解即可。

上面就是width:auto在不同场景下的宽度表现……的简介

没错,上面说了这么多都是简介,更多知识点篇幅原因就不展开,有兴趣可以去书里寻找。

二、CSS3中的width:auto

在CSS3中,width:auto多种尺寸表现有了专门的属性值进行对应。

包括fill-available, max-content, min-content, 以及fit-content。语法如下:

.example1 {
    width: fill-available;
}
.example2 {
    width: max-content;
}
.example3 {
    width: min-content;
}
.example4 {
    width: fit-content;
}

目前有些属性生效还需要webkit私有前缀。

在移动端目前是可以使用的,我自己用下来还不错。保留元素原始的display计算值,又能有其他不一样的宽度表现。

以上CSS3新的width属性值我之前有专门写过文章介绍,“理解CSS3 max/min-content及fit-content等width值”,年代久远,估计已经湮没了,今天借此机会再唤醒下。

三、结束语

端午节站点全面https升级后,不知道是因为服务器IP变了,还是其他什么原因,搜索引擎的收录断崖式下跌,[捂脸],所以,难免有些焦虑,比方说这篇文章,写到最后才发现尼玛原来之前写过类似的文章,有些水,罪过罪过。

https升级还是要升的,以前的收录丢了就丢了吧,就当重新开始,从零出发,再开始慢慢积累。

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=7819

(本篇完)