在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。
常用的块状元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的内联元素有:
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的内联块状元素有
<img>、<input>
block(块级元素)
特点
- 每个块级元素都从新的一行开始,并且其后的元素也另起一行。
- 元素的高度、宽度、行高以及顶和底边距都可设置。
- 水平拉伸,垂直包裹。
拉伸的意思是元素宽度在不设置的情况下,是它本身父容器的100%
包裹的意思是元素的垂直高度恰好能包住其中的文本内容
注意
块级元素的margin如果碰不到祖先元素的border或者padding,会与祖先元素垂直方向的margin-top、margin-bottom交叠。上下相邻的同级元素的margin也会交叠,就产生了margin合并。
inline(内联元素)
特点
- 和其他元素都在一行上。
- 元素的高度、宽度、行高及顶部和底部边距不可设置。
- 元素的宽度就是它包含的文字或图片的宽度,不可改变。
注意
内联元素display:inline的特性的自动包裹,水平和垂直方向会自动包裹至内容的宽度。因为元素的内联的,是嵌入到行里面的,所以对内联元素垂直方向设置的margin-top、margin-bottom不会影响span元素的layout,但是水平方向设置的margin-left、margin-right会影响内联元素的缩进。因为其具有自动包裹的特性,所以overflow属性无效。
inline-block
特点
- 和其他元素都在一行上。
- 元素的高度、宽度、行高以及顶和底边距都可设置。
- 不会继承父类的宽度。
注意
内联块状元素还有一个重要的特性就是可以通过设置它的margin来改变其layout,但是内联块状元素的margin不与其他元素的margin交叠。
inline-block和float的区别
inline-block: 水平排列一行,即使元素高度不一,也会以高度最大的元素高度为行高,即使高度小的元素周围留空,也不回有第二行元素上浮补位。可以设置默认的垂直对齐基线。
float: 让元素脱离当前文档流,呈环绕装排列,如遇上行有空白,而当前元素大小可以挤进去,这个元素会在上行补位排列。默认是顶部对齐。
参考文章