-
请把下面二行代码放进body标签里:
<div style=”border: 1px solid red;”>div1</div>
<div style=”border: 1px solid red;”>div1</div>
浏览器的呈现效果:
div1
div1
这二个div占据了二行空间,叫做块级元素(block)。
再把下面二行代码也放进body标签里:
<span style=”border: 1px solid red;”>span1</span>
<span style=”border: 1px solid red;”>span2</span>
浏览器的呈现效果:
span1 span1
这两个span并列在一行,叫做内联元素(inline)。块级元素和内嵌元素的区别:
· 块级元素 用来搭建网站架构、布局、承载内容,如:div、ul、li、dl、dt、dd、h1-h6、p、address……
内联元素 用在文本之中的某一行的修饰,如:a、span、strong、sub、sup、img……
· 块级元素是盒子,盒子是有宽高的,即不管里面有多少东西,外部就可以设置其宽高。
内联元素是袋子,其宽高由里面的东西撑起来的。
· 块级元素和内嵌元素之间互相转换,转换的代码如下:
display:block; /* 转成块元素 */
display:inline; /* 转成内嵌元素 */
· 块级元素和内嵌元素对于CSS的调用规则:
1. 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素:
<div><h1></h1><p></p></div> —— 对
<a href=”#”><span></span></a> —— 对
<span><div></div></span> —— 错
2. 有几个特殊的块级元素只能包含内嵌元素,不能再包含块级元素,这几个特殊的标签是:
h1-h6、p、dt。
<p><ol><li></li></ol></p> —— 错
<p><div></div></p> —— 错
3. li内可以包含div标签/父级ul或者是ol
li和div标签都是装载内容的容器,地位平等,没有级别之分。
4. 块级元素与块级元素并列、内嵌元素与内嵌元素并列:
<div><h2></h2><p></p></div> —— 对
<div><a href=”#”></a><span></span></div> —— 对
<div><h2></h2><span></span></div> —— 错注:display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。
inline-block的元素特点:
将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)
并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline- block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了 display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline- block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行 布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。