总体概念
block 和 inline 这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素)。
block 元素通常被现实为独立的一块,会单独换一行。
inline 元素则前后不会产生换行,一系列 inline 元素都在一行内显示,直到该行排满。
常见的块级元素有:div、form、table、p、pre、h1~h6、dl、ol、ul 等。
常见的内联元素有:span、a、strong、em、label、input、select、textarea、img、br 等
display 属性中的 block,inline 和 inline-block
1.display: block
- block 元素会独占一行,多个 block 元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
- block 元素可以设置 width,height 属性。块级元素即使设置了宽度,仍然是独占一行。
- block 元素可以设置 margin 和 padding 属性。
.item {
background: yellow;
display: block;
width: 50px;
height: 50px;
padding: 10px;
margin: 20px;
border-style: solid;
border-width: 1px;
}
<div class='item'>123</div>
<div class='item'>456</div>
效果:
2.display: inline
- inline 元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
- inline元素设置 width,height 属性无效。
- inline 元素的 margin 和 padding 属性,水平方向的 padding-left,padding-right,margin-left,margin-right 都产生边距效果;但竖直方向的 padding-top,padding-bottom,margin-top,margin-bottom 不会产生边距效果。
.item {
background: yellow;
display: inline;
width: 50px;
height: 50px;
padding: 10px;
margin: 20px;
border-style: solid;
border-width: 1px;
}
<div class='item'>123</div>
<div class='item'>456</div>
效果:
3.display: inline-block
将对象呈现为 inline 对象,但是对象的内容作为 block 对象呈现。内联对象会被排列在同一行内,既具有 block 的宽度高度特性又具有 inline 的同行特性。
.item {
background: yellow;
display: inline-block;
width: 50px;
height: 50px;
padding: 10px;
margin: 20px;
border-style: solid;
border-width: 1px;
}
<div class='item'>123</div>
<div class='item'>456</div>
效果: