css使用伪元素来清除浮动 (clearfix使用讲解)

标签: cssclearfix清除浮动   时间:2017-10-20
我想大家在写CSS的时候应该都对清除浮动的用法深有体会,而且有很多种方法可以清除页面浮动,今天我们就来讨论下使用clearfix来清除浮动的原理及实例。

clearfix进化史

首先在很多很多年以前我们常用的清除浮动是这样的。现在可能还可以在很多老的站点上可以看到这样的代码,相当暴力有效的解决浮动的问题。但是这个用法有一个致命伤,就是每次清除浮动的时候都需要增加一个空标签来使用。

这种做法如果在页面复杂的布局要经常清除浮动的时候就会产生很多的空标签,增加了页面无用标签,不利于页面优化。但是我发现大型网站中 居然还在使用这种清除浮动的方法。有兴趣的同学可以上他们首页搜索一下他们的.blank0这个样式名称。

因此有很多大神就研究出了 clearfix 清除浮动的方法,直接解决了上面的缺陷,不需要增加空标签,直接在有浮动的外层加上这个样式就可以了,这也是我们今天要讨论的clearfix进化史。

 

clearfix的原理:

1、在IE6, 7下zoom: 1会触发hasLayout,从而使元素闭合内部的浮动。

2、在标准浏览器下,.clearfix:after这个伪类会在应用到.clearfix的元素后面插入一个clear: both的块级元素,从而达到清除浮动的作用。

3、在需要清除浮动的时候,只要写一个.clearfix就行了,然后在需要清浮动的元素中 添加clearfix类名就好了。

 

clearfix的定义:

.clearfix:after {}{       
    content: ".";     /**//*内容为“.”就是一个英文的句号而已。也可以不写。*/
    display: block;   /**//*加入的这个元素转换为块级元素。*/
    clear: both;     /**//*清除左右两边浮动。*/
    visibility: hidden;      /**//*可见度设为隐藏。注意它和display:none;是有区别的。visibility:hidden;仍然占据空间,只是看不到而已;*/
    line-height: 0;    /**//*行高为0;*/
    height: 0;     /**//*高度为0;*/
    font-size:0;    /**//*字体大小为0;*/
}

.clearfix {}{ *zoom:1;}   /**//*这是针对于IE6的,因为IE6不支持:after伪类,这个神奇的zoom:1让IE6的元素可以清除浮动来包裹内部元素。*/

 

clearfix实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>clearfix实例:</title>
<style>
#container {
	  background-color: #AAA;
  	width: 80%;
}

#logo {
	float: left;
  background-color: green;
}


#login {
  float: right;
}

#search {
	float: right;  
}

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {display: inline-block;}  /* for IE/Mac */
</style>
  </head>
<body>
<div id="container" class="clearfix">
  <div id="logo">
    <h1>Title</h1>
  </div>
  
	  <div id="search">
      <input type="text"/>
      <button>Search</button>
    </div>

    <div id="login">
      <button>Register</button>
      <button>Sign In</button>
    </div>
</div>

</body>
</html>

在线运行 

原文地址:http://www.manongjc.com/article/2175.html

上一篇:分享php多文件上传实现源码

下一篇:已是最后一篇