css之浮动

    不得不说float是件很恶心的事情,最开始学习布局时利用各种各样的float,最后搞的晕头转向。现在发现,一个好的网页制作使用float越少它的后续可开发性越高。但使用float时不可避免的,现在就说一说float那点事。

    float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

    文档流是相对于盒子模型讲的;文本流是相对于文子段落讲的。元素浮动之后,会让它跳出文档流,也就是说当它后面还有元素时,其他元素会无视它所占据了的区域,直接在它身下布局。但是文字却会认同浮动元素所占据的区域,围绕它布局,也就是没有拖出文本流。这就是文本环绕原因。但是绝对定位后,不仅元素盒子会拖出文档流,文字也会出文本流。那么后面元素的文本就不会在认同它的区域位置,会直接在它后面布局,不会在环绕。

浮动元素与block,inline,inline-block元素重叠显示顺序

(1)block元素与浮动元素重叠时,其边框和背景在该浮动元素之下显示,而内容在浮动元素之上显示

(2)inline或inline-block元素与浮动元素重叠时,其边框、背景和内容都在该浮动元素之上显示

清除浮动方法

(1)  给父盒子加高度

使用设置高度样式,清除浮动产生,前提是对象内容高度要能确定并能计算。

(2)  父设置overflow:hidden

原因?因为overflow:hidden属性相当于是让父级紧贴内容,这样即可紧贴其对象内内容(包括使用float的div盒子),从而实现了清除浮动。

(3)  clear:both

新建一个样式选择器CSS命名为“.clear”,并且对应选择器样式为“clear:both”,然后我们在父级“</div>”结束前加此div引入“class="clear"”样式。

(4)使用:after 伪元素

给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout。

.clearfix:after{

  content: ".";

  display: block;

  height: 0;

  clear: both;

  visibility: hidden; 

  }

.clearfix {

  /* 触发 hasLayout */

  zoom: 1;

  }

总结:

在网页主要布局时使用:after伪元素方法并作为主要清理浮动方式;在小模块如ul里使用overflow:hidden;;如果本身就是浮动元素则可自动清除内部浮动,无需格外处理;正文中使用clear both清除浮动。

原文地址:https://www.cnblogs.com/microcosm/p/6921676.html