zoukankan      html  css  js  c++  java
  • 两种好用的清除浮动的小技巧(clearfix hack)

    方法一:使用内容生成的方式清除浮动

    这种方法不能解决margin在垂直边界上的叠加问题,如果不涉及margin的边界叠加问题使用这种方法清除浮动就行了 。

     1 /*
     2 :after 选择器向选定的元素之后插入内容 
     3 content:" "; (注意这里有一个空格)生成内容为空 
     4 display: block;
     5 clear:both; 清除前面元素浮动带来的影响 
     6 */
     7 .clearfix:after {
     8    content:""; 
     9    display: block; 
    10    clear:both; 
    11 }

    方法二:使用伪元素方式清除浮动

    bootstrap3.3.7中就使用这种方法清除浮动,这种方法代码比第一种多一点,不过它能解决margin在垂直边界上的叠加问题。

    盒子模型垂直方向的距离由margin决定。属于同一个BFC(Block formatting context直译为”块级格式化上下文”)的两个相邻盒子的margin会发生重叠 
    注意:发生重叠后,外边距的高度等于两个发生重叠的外边距的高度中的较大者。至于margin的边界重叠和BFC的问题有很多资料可查我就不再赘述了。

     1 /*
     2 浏览器支持: Firefox 3.5+, Safari 4+, Chrome, Opera 9+, IE 8+
     3 1.  content:" ";(注意这里有一个空格)是为了避免Opera Bug的一种方法。
     4 当contenteditable这个属性包含在document中的任何地方时会导致空格符出现在元素的顶部和底部,这些空格符是需要清除的。
     5 2.  当':before'需要包含其子元素的margin-top时,使用'table'替代'block'。
     6 */
     7 .clearfix:before,
     8 .clearfix:after {
     9     content: " "; /* 1 */
    10     display: table; /* 2 */
    11 }
    12 
    13 .clearfix:after {
    14     clear: both;
    15 }

    备注:

    这两种方法都不破坏文档结构也没有什么副作用兼容性也好,网上也有其他清除浮动的方法,不过都有些弊端,这两种相对更好一些。

    参考文献:

    清除浮动 的多种方式(clearfix):https://blog.csdn.net/FE_dev/article/details/68954481 

    A new micro clearfix hack:http://nicolasgallagher.com/micro-clearfix-hack/

    关于垂直方向margin叠加问题

  • 相关阅读:
    Java学习笔记1---JVM、JRE、JDK
    Java学习笔记2---设置环境变量JAVA_HOME,CLASSPATH,PATH
    第一次博客作业
    2018-2019-2 《Java程序设计》第5周学习总结
    作业四——文法和语言总结与梳理
    作业三——语法书、短语、直接短语、句柄
    作业二——文法和语言
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/codebook/p/9966882.html
Copyright © 2011-2022 走看看