css清除浮动的方法有哪些?

2024-01-18 10:46 小编
 我们上篇文章css浮动是什么意思?css为什么要清除浮动?中已经说到使用css浮动是因为在css中一些元素是块级元素,他们会自动启用新的一行,还有另一种内联元素也就是行内元素,它们会与之前的内容保持显示在“一行”;但是有时候我们需要改变这种布局方式,这就需要利用css浮动来实现。但是当出现“高度塌陷”时就会需要清除浮动。那么,css清除浮动的方法有哪些?
 
  下面我们就来看看css清除浮动的四种方法介绍。
 
  css清除浮动的方法一:
 
  使用带clear属性的空元素
 
  在浮动元素后使用一个空元素如<divclass="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<brclass="clear"/>或<hrclass="clear"/>来进行清理。
 
  
 
  .news{
 
  background-color:gray;
 
  border:solid1pxblack;
 
  }
 
  .newsimg{
 
  float:left;
 
  }
 
  .newsp{
 
  float:right;
 
  }
 
  .clear{
 
  clear:both;
 
  }
 
  <divclass="news">
 
  <imgsrc="news-pic.jpg"/>
 
  <p>sometext</p>
 
  <divclass="clear"></div>
 
  </div>
 
  说明:
 
  优点:简单,代码少,浏览器兼容性好。
 
  缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
 
  css清除浮动的方法二:
 
  使用CSS的overflow属性
 
  给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在IE6中还需要触发hasLayout,例如为父元素设置容器宽高或设置zoom:1。
 
  
 
  .news{
 
  background-color:gray;
 
  border:solid1pxblack;
 
  overflow:hidden;
 
  *zoom:1;
 
  }
 
  .newsimg{
 
  float:left;
 
  }
 
  .newsp{
 
  float:right;
 
  }
 
  <divclass="news">
 
  <imgsrc="news-pic.jpg"/>
 
  <p>sometext</p>
 
  </div>
 
  说明:
 
  在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。
 
  优点:不存在结构和语义化问题,代码量极少
 
  缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素;04年POPO就发现overflow:hidden会导致中键失效,这是我作为一个多标签浏览控所不能接受的。所以还是不要使用.
 
  css清除浮动的方法三:
 
  使用邻接元素处理
 
  什么都不做,给浮动元素后面的元素添加clear属性。
 
  
 
  .news{
 
  background-color:gray;
 
  border:solid1pxblack;
 
  }
 
  .newsimg{
 
  float:left;
 
  }
 
  .newsp{
 
  float:right;
 
  }
 
  .content{
 
  clear:both;
 
  }
 
  <divclass="news">
 
  <imgsrc="news-pic.jpg"/>
 
  <p>sometext</p>
 
  <divclass="content"></div>
 
  </div>
 
  css清除浮动的方法四:
 
  使用CSS的:after伪元素
 
  结合:after伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和IEhack,可以完美兼容当前主流的各大浏览器,这里的IEhack指的是触发hasLayout。
 
  给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Blockelement)清理浮动。
 
  
 
  .news{
 
  background-color:gray;
 
  border:solid1pxblack;
 
  }
 
  .newsimg{
 
  float:left;
 
  }
 
  .newsp{
 
  float:right;
 
  }
 
  .clearfix:after{
 
  content:"020";
 
  display:block;
 
  height:0;
 
  clear:both;
 
  visibility:hidden;
 
  }
 
  .clearfix{
 
  /*触发hasLayout*/
 
  zoom:1;
 
  }
 
  <divclass="newsclearfix">
 
  <imgsrc="news-pic.jpg"/>
 
  <p>sometext</p>
 
  </div>


Tag: 哪些 方法
在线咨询 拨打电话

电话

13363039260

内部绝密传真282期

微信二维码