
width的默认值
width属性的默认值是auto。它至少包含了以下4种不同的宽度表现
充分利用可用空间(fill-available)
像<div>、<p>元素等,如果保持它们的width为默认值,它们会尽可能占据父元素的空间。
例如,<div>元素如果没有设置宽度,则它的宽度默认是100%于父元素的width的
1 | .box { |
如下图所示:当在<body>元素中只定义了一个<div>元素时,<body>元素的默认width,我们可以从盒模型上看出来,是794px。

当我们选择<div>元素查看时,从盒模型上可以看到,<div>元素的width值也是794px,刚好是其父元素<body>的值的100%

有一点要注意的是:这里采用的标准盒模型,即一个元素设置的width值并不是它真正占据的宽度。因为这点现在我们并不需要用到,就放到以后用到再学。
自适应(fit-content)
典型代表就是浮动、绝对定位、inline-block元素或table元素。也可以理解为包裹性。
我们以一个按钮元素为例,来说明一下什么是自适应性(包裹性)
先想一下,按钮是什么元素?
多个按钮可以共处一行显示,并且可以设置按钮的宽度,因此它是inline-block元素。
1 | <!DOCTYPE html> |
页面效果如下所示:

从上述效果中可以得出一个结论:一个元素的尺寸由其内部内容决定,内部内容越宽,元素尺寸也就越宽,但是它就是再宽,也会被限制在父容器中,不会超出父容器的宽度,设置成auto的宽度是一个动态调整的值,自己能适应各种状态。
收缩到最小
待补充
超出容器限制
除非明确设置了width属性,否则元素不会主动超出父容器。但是存在一些特殊情况,比如内容很长的连续的英文和数字,或者对内联元素设置了white-space: nowrap
例如:给内联元素设置合并空白字符
1 | <!DOCTYPE html> |

子元素的display为inline-block,表现为自适应性,元素如果一行放不下,就会进行换行,决不会超出父容器。
但是,如果给内联元素设置了white-space:nowrap,由会强制让文字处于一行。就会表现出下面的效果:

再来看另一种情况:较长英文单词造成的无法换行
一个完整的英文单词默认是不能进行断开的,因此,如果一个单词过长,一行已经放不下了,那一行后面会直接空出来,换到下一行。如下图所示:

但是如果,将两个单词中间的空格去除,则浏览器会认为它们是一个长单词,将不会进行断开,而是放到一行上,又由于这个单词过长,一行放不下,所以就会突破父容器的限制,呈现下图中的效果:

外部尺寸和内部尺寸
就像盒子分为外在盒子和内在盒子一样,一个元素的尺寸也可以分为外部尺寸和内部尺寸。
外部尺寸
在上面的四种表现中,充分利用可以空间就属于外部尺寸,它的尺寸与元素内部的内容无关,而是和它外层的父元素有联系,像<div>、<p>之类的元素的width设置为auto,则它会尽可能占用父元素的空间。
内部尺寸
其余的3种表现都是元素的内部尺寸,比如像按钮inline-block这样的元素,它的尺寸就由其内容决定,它的内容越多,则其尺寸也越大,但是,尺寸再大,也会被限制在父容器中。
本文作者: CoderLeiShuo
本文链接:https://coderleishuo.github.io/lele/19436.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![]()
