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

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

元素的各种定义

块级元素与块元素

块级元素(block-level elements)

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

块元素

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

行内级元素与行内元素

行内级元素(inline-level elements)

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

行内元素

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

置换元素与非置换元素

置换元素(replaced element)

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

非置换元素(non-replaced element)

w3c并没有给出明确的非置换元素的解释,但能确定的是除置换元素之外,所有的元素都是非置换元素。

元素高度与宽度的讨论

行内级非置换元素

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

行内级置换元素

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

1.有固有比例的元素

对于有固有比例的元素来说如果宽度与高度的一方有确定的值,若另一方并无设置值,则另一方的计算值就由确定的高度或者宽度乘以固有比例来得到,因此对于有固有比例的元素,我们只用讨论高度与宽度中的一方即可,例如img元素

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
视觉格式化模型中的各种框
置换元素与非置换元素

    原文作者:Murphywuwu
    原文地址: https://segmentfault.com/a/1190000003409574
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞