CSS:关于元素高度与宽度的讨论 系列文章(二)

前言:在上一篇文章中讨论了关于块级非置换元素宽度与高度在不一样状况下的表现,在这篇文章中将详细的阐述来自w3c定义的视觉化格式模型中对于各类元素的定义,以及行内级非置换元素行内级置换元素宽度与高度的讨论css

元素的各类定义

块级元素与块元素

块级元素(block-level elements)

那些视觉上会被格式化成块状的元素,通俗一点来讲就是那些会换新行的元素。display 属性值为:block, list-item, table 值均可以将一个元素设置成块级元素。html

块元素

display属性值为block的元素,是块级元素的一个子集。浏览器

行内级元素与行内元素

行内级元素(inline-level elements)

行内级元素是那些不会为自身内容造成新的块,而让内容分布在同一行中的元素。display 属性的:inline, inline-table, inline-block 值均可以将一个元素设置成行内级元素。spa

行内元素

display属性为inline的元素,是行内级元素的一个子集code

置换元素与非置换元素

置换元素(replaced element)

一个内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素自己通常拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素。这类元素,浏览器根据元素的标签和属性,来决定元素的具体显示内容。
常见的置换元素有这些:img,input,textarea,select,buttonorm

非置换元素(non-replaced element)

w3c并无给出明确的非置换元素的解释,但能肯定的是除置换元素以外,全部的元素都是非置换元素。htm

元素高度与宽度的讨论

行内级非置换元素

宽度与高度的设置对于行内级非置换元素时不适用的,例如span,ablog

行内级置换元素

在前面已经结束过关于置换元素的概念,置换元素通常都是通常拥有固有尺寸(宽度,高度,宽高比)的元素,所以对于置换元素在不设宽度和高度的状况下,元素宽高度等于元素自身固有尺寸。所以只用对当元素宽度或者高度设为100%的状况进行讨论element

1.有固有比例的元素

对于有固有比例的元素来讲若是宽度与高度的一方有肯定的值,若另外一方并没有设置值,则另外一方的计算值就由肯定的高度或者宽度乘以固有比例来获得,所以对于有固有比例的元素,咱们只用讨论高度与宽度中的一方便可,例如img元素get

2.没有固有比例的元素

对于没有固定比例的元素,元素的宽度或者高度不会随另外一方的变化而变化,例如input,textarea,select,button

结论

对于行内级置换元素:在设宽度为100%的状况下
比照上一篇的例子,可自行进行实验,这里我就直接给出结论
若元素为普通流元素或者浮动元素,元素宽度或者高度为父元素宽度或者高度的100%;若元素为绝对定位元素,元素宽度或者高度为元素offset-parent宽度或者高度的100%;若元素为固定定位元素,元素宽度或者高度始终为body的100%

参考:
http://www.w3.org/TR/CSS21/conform.html
http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html
视觉格式化模型中的各类框
置换元素与非置换元素

相关文章
相关标签/搜索