CSS的Inline、Block属性

本文详细解析了浏览器在布局时遵循的原则,包括Inline元素和Block元素的子元素处理方式,通过具体示例展示了如何将不同类型的元素组织成合理的布局。

浏览器在布局时,会遵守下面两个原则:

Inline元素的孩子必须都是Inline元素。

Block元素的孩子要么都是Block,要么都是Inline。

示例一:代码“Children of Block Flows Test”:block包含了inline和block。

示例“Children of Block Flows Test”的div元素里面包含了文本(inline)、span(inline)、a(inline)、div(block)。

浏览器在渲染的时候会把前面三个连续的inline元素包含在一个匿名block里面。这样可以保证div里面的所有元素都是block元素。

其结果如下:

******Children of Block Flows Test(浏览器渲染模型)*******

</p>

<div>

<anonymous block>

final div.text1

<span> final div.span</span>

<a href="http://www.google.com">Google ME</a>

</anonymous block>

<div>

final div.div1

</div>

final div.text2

<div>

final div.div2

</div>

</div>

<p>


示例二:代码“Children of Inline Flows Test”:Inline包含了Inline和Block。

浏览器会在顶层Inline元素之外封装一个匿名Block:

******Children of Inline Flows Test(浏览器渲染模型)*******

<anonymous pre block>

<i>Italic only <b>italic and bold</b></i>

</anonymous pre block>

<anonymous middle block>

<div>

Wow, a block!

</div>

<div>

Wow, another block!

</div>

</anonymous middle block>

<anonymous post block>

<i><b>More italic and bold text</b> More italic text</i>

</anonymous post block>

完整代码如下:

<html>
<head>
</head>
<body>
<style>
div,span{background-color:green;margin:5px;border:1px solid #333;padding:5px;color:#fff;}
a{background-color:green;color:#fff;}
.b{display:block;}
.i{display:inline;}
div.i{display:inline;}
div.ib{display:inline-block;}
a.ib{display:inline-block;}
a.b{display:block;}
</style>
<p>
******inline,block Test*******
</p>
<div>
div display:block
</div>
<div class="i">
div display:inline
</div>
<div class="ib">
div display:inline-block
</div>
<span>span display:inline</span>
<span class="b">span display:block</span>
<span><a class="b"> span.a display:block</a></span>
<span><a class="ib"> span.a display:inline:block</a></span>
<br />
<p>
******Children of Block Flows Test*******
</p>
<div>
final div.text1
<span> final div.span</span>
<a href="http://www.google.com">Google ME</a>
<div>
final div.div1
</div>
final div.text2
<div>
final div.div2
</div>
</div>
<p>
******Children of Inline Flows Test*******
</p>
<i>Italic only <b>italic and bold
<div>
Wow, a block!
</div>
<div>
Wow, another block!
</div>
More italic and bold text</b> More italic text
</i>
</body>
</html>

http://www.webkit.org/blog/115/webcore-rendering-ii-blocks-and-inlines/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值