Heim  >  Artikel  >  Web-Frontend  >  谈谈CSS的浮动问题_html/css_WEB-ITnose

谈谈CSS的浮动问题_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:48:111130Durchsuche

浮动的工作原理

浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框则停留。

浮动元素可能引起的问题

1.父元素的高度无法被撑开,影响与父级元素同级的元素

2.与浮动元素同级的非浮动元素会跟随其后

3.若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面的显示结构

 

清除浮动有什么解决办法?

一般来说有三种办法。

1.使用空标签清除浮动

在所有浮动标签后面添加一个空标签并定义CSS属性  clear:both

对比图:div未被撑开

加个空标签就可以,弊端是增加了无语义标签

<style type="text/css">    html,body,div{ margin: 0;padding: 0;}      .box{border: 1px solid #333;}      p{border: 1px dotted #333;}      .box img{float: left;}      .box p{float: left;}      .cb{clear: both;}    </style></head><body><div class="box"><img  src="1.jpg"    style="max-width:90%" height="50px" alt="谈谈CSS的浮动问题_html/css_WEB-ITnose" >    <p>one</p><!--在这里增加    <div class="cb"></div> --></div></body>

当然了,如果浮动元素的后边元素你不需要浮动,可以顺便给它加个clear:both ,这样也不错。

2.使用overflow

给包含浮动元素的父元素标签添加CSS属性,overflow:hidden or auto; zoom:1  ,其中zoom:1用于兼容IE6,目的是为了触发hasLayout

3.使用after伪对象清除浮动。

但该方法只适用于非IE浏览器,还要注意的是使用的时候要记得为需要清除浮动元素的伪对象设置height:0; 否则该对象会比实际高出若干像素。

<head><style>    html,body,div{ margin: 0;padding: 0;}      .box{border: 1px solid #333;}      p{border: 1px dotted #333;}      .box img{float: left;}      .box p{float: left;}      .cb{clear: both;}            .clearfix{display: inline-block; /*zoom:1;*/ } /* for IE  ; or use zoom:1 to trigger the hasLayout; */      .clearfix:after{content: "."; display: block; height: 0; visibility: hidden;clear: both;}    </style></head><body><div class="box clearfix"><img  src="1.jpg"    style="max-width:90%" height="50px" alt="谈谈CSS的浮动问题_html/css_WEB-ITnose" >    <p>one</p></div></body>

 

4.就是给浮动元素的父元素也浮动起来,但这整体又浮动了所以不推荐~

5.还有一种就是直接给浮动的元素添加属性  display:table;

FF Chrome等支持,IE6/IE7测试显示不支持~ 所以还得触发hasLayout ,加上zoom:1  或者 display:inline-block 吧 

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn