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 国际许可协议 进行许可。转载请注明出处!