文章导读:
CSS布局浮动(float)和定位(position)属性的区别和如何使用
postion:relative是子块级元素面向父级元素的相对定位,定位关键字使用left/right/top/bottom。兄弟块元素之间相对进行定位,但是position移动后,原位置依然保留。而且随后的兄弟块元素定位基于被移走前的位置。 float:right/left是子块级元素流集合面向父级元素的定位,定位的关键词使用margin/padding。兄弟块元素之间进行相对的定位均基于移动后的新位置进行重新渲染,可以重叠,原位置被清空。 二者之中最大的差别就是位置保留。 人们也就利用这种差异,可以做出CSS代码的滑动门菜单。 hover时取当前元素为保留位置,定义一个relative时,没有hover时使用float清空保留位置。 比较示例中的3个样式表,就可以发现: !--style *{border:1px solid #eee;}body{border-color:#09f;}ul{list-style:none;width:800px;height:600px;margin:0 auto;padding:10px;} li{float:left;} #li1{width:200px;height:200px;border-color:red;} #li2{width:200px;height:150px;border-color:green;margin-left:-20px;} #li3{width:200px;height:100px;border-color:blue;margin-left:-20px;} /style-- !--style
绝对定位与相对定位和浮动的区别与运用
绝对定位使元素脱离文档流,因此不占据空间。普通文档流中元素的布局就当绝对定位的元素不存在时一样。因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素。
而浮动元素的定位还是基于正常的文档流,然后从文档流中抽出并尽可能远的移动至左侧或者右侧。文字内容会围绕在浮动元素周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。它只是改变了文档流的显示,而没有脱离文档流,理解了这一点,就很容易弄明白什么时候用定位,什么时候用浮动了。
一个元素浮动或绝对定位后,它将自动转换为块级元素,而不论该元素本身是什么类型。
浮动定位 相对定位
CSS 相对定位
相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
CSS 绝对定位
绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
CSS float 属性
CSS 参考手册
定义和用法
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
它们可以覆盖页面上的其他元素。 而浮动元素的定位还是基于正常的文档流,然后从文档流中抽出并尽可能远的移动至左侧或者右侧。文字内容会围绕在浮动元素周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。它只是改变了
是位置保留。人们也就利用这种差异,可以做出CSS代码的滑动门菜单。hover时取当前元素为保留位置,定义一个relative时,没有hover时使用float清空保留位置。比较示例中的3个样式表,就可以发现:!--style*{b
:200px;height:150px;border-color:green;margin-left:-20px;}#li3{width:200px;height:100px;borde
;}ul{list-style:none;width:800px;height:600px;margin:0 auto;padding:10px;}li{float:l