css:清除浮动_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:37:28
Original
1202 people have browsed it

我们经常用伪类来清除浮动,比如这样

.clearfix:after {  content: "";  display: block;  clear: both;  height: 0;}.clearfix {  *zoom: 1; }//hack IE6我们来看一下样例:
Copy after login

<!DOCTYPE html><html><head>    <title></title>    <style>        *{            padding: 0px ;            margin: 0px ;        }        .block{            width: 100px ;            height: 100px ;            float: left ;            margin:10px;            border: solid 1px ;        }        .clearfix:after{            content: "" ;            display: block;            clear: both ;        }    </style></head><body><div class="clearfix">    <div class="block"></div>    <div class="block"></div>    </div>    <div class="block"></div>    <div class="block"></div></body></html>
Copy after login

本来四个格子是同行排列的,清除了浮动后就在清除浮动的地方换行了。

注意一定要是在父类添加清除浮动的clearfix类,如果不加在父类上是没有用的。我个人的理解是这样的,像before和after这样的伪类其实就是在元素内部的前面或后面添加一个元素,这样效果是一样的

<!DOCTYPE html><html><head>    <title></title>    <style>        *{            padding: 0px ;            margin: 0px ;        }        .block{            width: 100px ;            height: 100px ;            float: left ;            margin:10px;            border: solid 1px ;        }        .clear{            clear: both;        }    </style></head><body><div>    <div class="block"></div>    <div class="block"></div>    <div class="clear"></div>    </div>    <div class="block"></div>    <div class="block"></div></body></html>
Copy after login

但注意下面这样是不行的

<body>    <div class="block"></div>    <div class="block clearfix"></div>        <div class="block"></div>    <div class="block"></div></body>
Copy after login

还可以用overflow来清除浮动

<!DOCTYPE html><html><head>    <title></title>    <style>        *{            padding: 0px ;            margin: 0px ;        }        .block{            width: 100px ;            height: 100px ;            float: left ;            margin:10px;            border: solid 1px ;        }        .clear{            overflow: hidden;        }    </style></head><body><div class="clear">    <div class="block"></div>    <div class="block"></div>    </div>    <div class="block"></div>    <div class="block"></div></body></html>
Copy after login

清除浮动的另外一个原因就是要把浮动元素的父元素撑开,为什么用overflow能清除浮动我查到了以下这段话:是因为overflow除了(visible)会重新给他里面的元素建立块级格式化(block formatting context)floats, position absolute, inline-block, table-cell和table-caption都不是块级样式,所以才会用到clear来控制浮动overflow也可以清除浮动是因为当在父级元素设置overflow时候,除了visible,就是只有auto, hidden或者scroll时候,也会建立新的块级格式给他的子元素, 从而起到清楚浮动效果具体信息可以在这里看虽然clear是旧的方式,但还是推荐用clear来做,有些情况会比overflow处理的要好.
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template