美文网首页前端面试题
CSS盒模型—面试知识点

CSS盒模型—面试知识点

作者: Aniugel | 来源:发表于2019-09-26 10:14 被阅读0次
    1、基本概念:标准模型+IE模型

    margin、border、padding、content

    2、标准模型和IE模型的区别:计算高度和宽度的不同,怎么不同,高度宽度是怎么计算的

    width:100px; 如果是IE,100px包括border和padding,

    3、css如何设置这两种模型

    box-sizing:content-box;
    box-sizing:border-box; /IE模型/

    4、js如何设置获取盒模型对应的宽和高

    dom.style.width/height // 只能取到内联样式
    dom.currentStyle.width/height // 取到渲染后的样式(只有IE支持)
    window.getComputedStyle(dom).width/height // 兼容firefox,chrome,兼容性更好
    dom.getBoundingClientRect().width/height // 运行后的宽度,getBoundingClientRect()能得到left/top/width/height,bounding:范围,rect,矩形

    <body>
        <section>
            <style>
                #dom {
                    height: 400px;
                    width: 100px;
                    background-color: red;
                }
            </style>
            <div id='dom' style="width:200px;height:200px;">
                <!-- <div id='dom'> -->
                88888
            </div>
        </section>
    </body>
    <script>
        // var w = document.getElementById('dom').style.width; //如果行内元素没有设置像素 获取为空 200px
        // var w = document.getElementById('dom').currentStyle.width; //ie 浏览器  其他报错 200px
        // var w = window.getComputedStyle(document.getElementById('dom')).width; //兼容firefox,chrome,兼容性更好 200px
        // var w = document.getElementById('dom').getBoundingClientRect().width; // 200
        // var w = document.getElementById('dom').getBoundingClientRect().left; // 8  默认宽度
        // console.dir(w)
    </script>
    
    5、实例题(根据盒模型解释边距重叠)

    (1)边距重叠:父子元素,兄弟元素,空元素上下边距
    (2)#sec的子元素是.child
    ①#sec{}
    .child{height:100px;margin-top:10px;}
    这时#sec的高度为100px;
    ②#sec{overflow:hidden;}
    .child{height:100px;margin-top:10px;}
    这时#sec的高度为110px;

    6、BFC(边距重叠解决方案)

    (1)BFC的基本概念:块级格式化上下文,Block Formatting Context

    IFC:内联元素格式化上下文,不过面试问的比较多的是BFC

    (2)BFC原理/BFC渲染规则
    ①BFC元素垂直方向的边距会发生重叠
    ②BFC的区域不会与浮动元素的box重叠(可用于清除浮动)
    ③BFC为一个独立的元素,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素。
    ④计算BFC高度的时候,浮动元素也会参与计算。

    (3)如何创建BFC
    ①float值不为none;
    ②position的值不为static(默认值),relative,即为absolute,fixed
    ③display为inline box,table-cell,table,table-caption,跟table相关的。
    ④overflow不为visible,overflow为auto,hidden;
    ⑤根元素

    (4)BFC的使用场景
    ①属于同一个BFC上的元素垂直方向边距重叠
    ②BFC元素不与float重叠
    ③清除浮动:子元素是浮动元素的时候,把外层元素设置成BFC的时候,子元素的浮动元素也会参与到父级元素的高度计算上来。

    <!--BFC不与float重叠-->
    <section id="layout">
      <style media="screen">
        #layout{
          background:red;
        }
        #layout .left{
          float:left;
          width:100px;
          height:100px;
          background:pink;
        }
        #layout .right{
          height:110px;
          background:#ccc;
          overflow:auto;
        }
      </style>
      <div class="left"></div>
      <div class="right"></div>
    </section>
    <!--BFC子元素即使是float,也会参与高度计算-->
    <section id="float">
      <style media="screen">
        #float{
          background:red;
          /*overflow:auto;*/
          float:left;
        }
        #float .float{
          float:left;
          font-size:30px;
        }
      </style>
      <div class="float">我是浮动元素</div>
    </section>
    

    BFC详解:https://www.jianshu.com/writer#/notebooks/26471780/notes/44644373/preview
    知识大全

    相关文章

      网友评论

        本文标题:CSS盒模型—面试知识点

        本文链接:https://www.haomeiwen.com/subject/tqdgectx.html