zoukankan      html  css  js  c++  java
  • 【前端面试CSS】——盒子模型(标准模型和怪异模型)

    前言:之前在面试遇到过的问题,做个小总结~

    1.CSS 盒子模型(Box Model)

    所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

    CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、实际内容(content)四个属性。

    盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

    https://img3.sycdn.imooc.com/5b73f4140001253705360289.jpg

    2.看一个button实例

    <button style="margin: 10px;padding: 10px;border: solid red 2px; 70px;">这是button</button>

    https://img2.sycdn.imooc.com/5b73f48e0001fcfe01190101.jpg

    在浏览器中检查元素可得到下图:

    https://img1.sycdn.imooc.com/5b73f4ad00013d5a09370262.jpg

    从图中可以看出:蓝色部分(46 x 34.400 )是button的content,绿色的是padding,黄色的是border, 深黄色是margin。

    3.W3C盒子模型(标准盒模型)和IE盒子模型(怪异盒模型)

    W3C盒子模型(标准盒模型)

    https://img4.sycdn.imooc.com/5b73f51e00015f7907740523.jpg

    根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的;即在标准模式下的盒模型,盒子实际内容(content)的width/height=我们设置的width/height;盒子总宽度/高度=width/height+padding+border+margin。

    .box {
      200px;
     height: 200px;
     border: 20px solid black;
     padding: 50px;
     margin: 50px;
     }

     https://img2.sycdn.imooc.com/5b73f5330001ad9a02380231.jpg

    IE盒子模型(怪异盒模型)

    https://img1.sycdn.imooc.com/5b73f53f0001a7ec07610507.jpg

    在该模式下,浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和;即在怪异模式下的盒模型,盒子的(content)宽度+内边距padding+边框border宽度=我们设置的width(height也是如此),盒子总宽度/高度=width/height + margin = 内容区宽度/高度 + padding + border + margin。

    .box {
      200px;
     height: 200px;
     border: 20px solid black;
     padding: 50px;
     margin: 50px;
     }

     https://img1.sycdn.imooc.com/5b73f54d0001c69e02470229.jpg

    4.两种模式下如何解决样式的兼容性问题

    建议不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。

    5.CSS3指定盒子模型种类

    box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素。

    box-sizing: content-box;//宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。

    box-sizing: border-box;// 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

    box-sizing: inherit;// 规定应从父元素继承 box-sizing 属性的值。

    即box-sizing属性可以指定盒子模型种类,content-box指定盒子模型为W3C(标准盒模型),border-box为IE盒子模型(怪异盒模型)。

  • 相关阅读:
    indexDB数据库
    使用数据库实现web留言板
    简易存储读取
    随手记
    小程序三:app对象的使用
    小程序二:配置
    文件上传新方式 files 对象创建
    AJAX 上传多文件
    Uncaught TypeError: Illegal invocation问题解决方法
    nodeJs 复制文件夹及文件
  • 原文地址:https://www.cnblogs.com/shijianblog/p/12556823.html
Copyright © 2011-2022 走看看