精确解释一下CSS浮动的含义

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:36:10
我看了一些教材,但还是对"浮动"这个词的含义不太明确.
比如:
<ul>
<li style="float:left">第一列</li>
<li style="float:left">第二列</li>
<p style="clear:both">下一段</p>
</ul>
1.首先如果不加左浮动,第一列和第二列会竖直显示在一列.为什么加了左浮动就会显示在同一行呢?
2.清除浮动的意思是什么?为什么"下一段"清除了浮动就会显示在第二行呢?为什么不会和第一行的内容重合呢?

任何元素 element 都可以被浮动。段落、div、list、tables,以及图像都可以被浮动,事实上即使是像 span 和 strong 这样的行内置元素也可以很好地进行浮动。
任何申明为 float 的元素自动被设置为一个"块级元素", 这表示它可以具有申明的"width"和"height"属性。事实上,floats当前被要求具有一个申明的宽度,但这不是现代浏览器制造者的思路,W3C以及开始同意这样的作法。现在大多数人的意见是没有指定宽度的float应当伸缩包装到浮动内容的宽度。因此,内部带有图片的一个float将和图片一样宽,带有文本的一个浮动将与该浮动内的最长文本行一样宽。
CSS2.1的浮动规则中这样讲: "如果 width 是以 auto 方式计算得到,使用的值是 shrink-tofit 伸缩到适合的宽度。" 所有现代的浏览器已经这样做,除了IE5/Mac。除非浮动具有某种指定的宽度,否则该浏览器会变得错误百出。现在大多数聪明的编码人员会让浏览器伸缩其没有宽度属性的floats, 并使用一个隐藏的专门给IE5/Mac的宽度知识。这可能不算很巧妙,但是它是现在不能满足该规范的极少数的浏览器,同时Mac用户有几种更好的选择。MS停止了对IE5/Mac的支持,因此寻求像伸缩包装式浮动这样有用特性被避免的代价太高了,这样只有IE5/Mac用户不会看到错误的浮动。

文章出处:http://www.diybl.com/course/1_web/css/cssjs/2007927/74533.html