本文主要是对《CSS世界》3.2节width/height作用的具体细节进行了抽取和总结。更多信息可以在《CSS世界》找到。1.隐藏宽度:auto一般情况下,如果我们不设置宽度,默认值为auto。根据不同的要素,表现出以下特点:充分利用可用空间。
等块级元素的宽度默认为父容器的100%。(英文名称:fill-available)收缩和包裹。典型代表有浮动、绝对定位、行内块元素、表格元素。(英文名称:shrink-fit)收缩到最小。它最有可能出现在表格布局为自动的表格中。超出容器限制。通常,当父元素的宽度固定时,子元素的宽度不会超过父元素。除非有明确的宽度相关设置,比如连续的特别长的英文单词,或者内联元素设置为white-space:nowrap。在css世界中,盒子分为“外部盒子”和“内部盒子”。同样,尺寸也分为“外尺寸”和“内尺寸”。其中,“外部尺寸”是指尺寸由外部元素决定,“内部尺寸”是指尺寸由内部元素决定。1.外形尺寸和流体特性当我们将足量的水倒入容器中时,水会均匀地覆盖整个容器。这就是“流”的概念。页面上放一个块级元素,宽度自然会填满容器,所以没必要设置width:100%。例子:两个子元素都有margin和padding,前者width:auto,完全依赖流特性,后者width:100%,得到的尺寸会超过父容器。默认情况下,绝对定位元素的宽度由其内部大小决定。特殊情况下,当左/右相反方向属性值同时存在时,其宽度是相对于最近的具有定位特性的祖先元素计算的。2.内部尺寸和流体特性如果一个元素内部没有内容,宽度为0,则表示应用了内部尺寸,主要体现在wrapping上,即包裹性和适配性。所谓适应性,就是元素的大小由内部大小决定,但总是小于父容器的大小。换句话说,内部子元素似乎有一个最大宽度:“父容器宽度”。按钮是一个很好的例子。例子:有这样一个需求,当文字少的时候要居中显示,文字多的时候左对齐。这时候就可以使用这个包来实现了。