css 清除浮动 定位 z-index属性

当一个父元素包含多个浮动的子元素的时候,子元素的浮动确定了他们的位置,但是子元素不会影响父元素的宽度,使父元素塌陷,从而使父元素高度为0,这个时候可以为父元素清除浮动,从而阻止父元素塌陷。

1.overflow方法

对父元素设置overflow:hidden;

但是overflow清除浮动会有一些缺点。

2.clearfix方法

清除浮动更好的方法是clearfix

“clearfix”技巧是基于在父元素上使用“:before”和“:after”两个伪类。使用这些伪类,我们可以在浮动元素的父容器前面和后面创建隐藏元素。“:before”伪类是用来防止子元素顶部的外边距塌陷,使用“display: table”创建一个匿名的“table-cell”元素。这也确保在IE6和IE7下具有一致性。“:after”伪类是用来防止子元素的底部的外边距塌陷,以及用来清除元素的浮动。

在IE6和7的浏览器中,加上“*zoom”属性来触发父元素的hasLayout的机制。决定了元素怎样渲染内容,以及元素与元素之间的相互影响。

 1 .box-set:before,
 2         .box-set:after {
 3             content: "";
 4             display: table;
 5         }
 6         .box-set:after {
 7             clear: both;
 8         }
 9         .box-set {
10             *zoom: 1;
11         }

但是每次都为父元素设置太麻烦,可以单独设置一个类用来清除浮动,当有父元素需要清除浮动的时候把这个类加给父元素就可以

.clearfloat:before,
        .clearfloat:after {
            content: "";
            display: table;
        }
        .clearfloat:after {
            clear: both;
        }
        .clearfloat {
            *zoom: 1;
        }
<div class='parent','clearfloat'>

</div>

 值得注意的是,目前每个元素只有一个“:before”和“:after”伪类。当你尝试使用其他的“:before”和“:after”的clearfix技巧,你的内容可能无法达到想要的效果。

 

position有4个属性 static relative absolute fixed

元素都有position属性,默认值为static,意为静止的,指他们不接受位置属性设置(top bottom left right)

position:relative;

相对定位,相对于元素开始的位置,使用位置属性设置,需要注意的是,使用相对定位的元素原位置扔占据这正常的文档流,别的元素无法占据相对定位元素原来的位置。

position:absolute;

绝对定位,绝对定位的位置和父元素有关系,绝对定位要求祖先元素至少有一个不是static定位。否则就相对于body进行定位。使用位置属性相对于其祖先元素进行定位,需要注意的是绝对定位的元素会脱离原来的文档流,原来的位置可以被其他元素占据。

position:fixed;

固定定位,相对于浏览器窗口进行定位。元素会脱离原来的文档流。ie6不支持fixed属性。

 

z-index属性可以改变元素的层叠属性。给元素设置z-index属性要求元素的position属性至少是relative absolute fixed中的一种。

.box1{
    z-index:3;  
}
.box2{
    z-index:2;
}
.box3{
    z-index:1
}

第一个盒子在第二个和第三个上面,第二个盒子在第一个上面

posted @ 2017-09-23 12:15  刘槟豪  阅读(1929)  评论(0编辑  收藏  举报