zoukankan      html  css  js  c++  java
  • 什么是BFC? CSS 如何使用伪元素清除浮动?

    .BFC概念:

      块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。

    我们先了解一个名词:BFC(block formatting context),中文为“块级格式化上下文”。

    先记住一个原则: 如果一个元素具有BFC,那么内部元素再怎么翻江倒海,翻云覆雨,都不会影响外面的元素。所以,BFC元素是不可能发生margin重叠的,因为margin重叠会影响外面的元素的;BFC元素也可以用来清除浮动带来的影响,因为如果不清除,子元素浮动则会造成父元素高度塌陷,必然会影响后面元素的布局和定位,这显然有违BFC元素的子元素不会影响外部元素的设定。

    以下情况会触发BFC:
    •<html>根元素
    •float的值不为none
    •overflow的值为auto,scroll,hidden
    •display的值为table-cell,table-caption和inline--block中的任何一个
    •position的值不为relative和static 即 position: absolute/fixed

    显然我们在设置overflow值为hidden时使container元素具有BFC,那么子元素child浮动便不会带来父元素的高度坍塌影响。

    一、利用伪类元素清除浮动:

    .clearFix::after,.clearFix::before {
    
          display: block; 
    
          content: '';
    
          clear: both; 
    
          visibility: hidden;
    
          height: 0; 
    
    }
    
    .clearFix { zoom: 1;}
    

     

    • 原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
    • 优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)
    • 缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持
    • 建议:推荐使用,建议定义公共类,以减少CSS代码

    二、 在结尾处添加空div标签clear:both

    /*清除浮动代码*/
       .clearfloat{clear:both}

    三、父级div定义height

    • 原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题
    • 优点:简单,代码少,容易掌握
    • 缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
    • 建议:不推荐使用,只建议高度固定的布局时使用

    四、父级div定义overflow:hidden

    • 原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
    • 优点:简单,代码少,浏览器支持好
    • 缺点:不能和position配合使用,因为超出的尺寸的会被隐藏
    • 建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用
  • 相关阅读:
    学生宿舍水电管理系统 产品需求评审(用户故事)
    nyoj 14-会场安排问题 (贪心)
    好看的鼠标hover效果
    JavaScript-三种弹窗方式
    博客园美化夜间模式
    js写个小时钟
    js获取时间,循环执行任务,延迟执行任务
    Bzoj1103 [POI2007]大都市meg
    POJ2155 Matrix
    POJ3625 Building Roads
  • 原文地址:https://www.cnblogs.com/zjz666/p/11114942.html
Copyright © 2011-2022 走看看