1. display:block
1.1 block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素的宽度会自动填满其父元素宽度。
1.2 block元素可以设置其width,height属性。块级元素即使设置了宽度,仍然是独占一行,但如果有margin且block元素本身的宽度不足父元素宽度的100%的话,该元素宽度+margin才是100%。
1.3 block元素可以设置margin和padding属性。
2. display:inline
2.1 inline元素不会独占一行,多个相邻的行内元素会从左到右排列在同一行里,直到一行装不下了,才会新换一行,其宽度随元素的内容而变化。
2.2 inline元素设置width,height属性无效。
2.3 inline元素的margin和padding属性,水平方向的padding-left,padding-right,margin-left,margin-right都能产生边距效果;但竖直方向的padding-top,padding-bottom,margin-top,margin-bottom不会产生边距效果。
3. display:inline-block
简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以设置一个link(<a>)为inline-block属性,使其既具有block的宽度和高度特性又具有inline的同行特性。
Note:
1. <ul>,<li>都是块级元素,所以写navigation bar的时候要将<ul>定义为block,而将<li>定义为inline-block; <a>是行内元素,如果要设置占满背景容器,也需定义为block。
2. 上述所有的“一行”都是指父元素(父容器)内的一行。