• 盒模型对比


    W3C的标准盒模型:
    外盒尺寸计算(元素空间尺寸):
    element 空间高度 = 内容高度 + 内边距 + 边框 + 外边距
    element 空间宽度 = 内容宽度 + 内边距 + 边框 + 外边距

    内盒尺寸计算(元素大小):
    element 高度 = 内容高度 + 内边距 + 边框
    element 宽度 = 内容宽度 + 内边距 + 边框

    IE传统盒模型(IE6以下,不包括IE6):
    外盒尺寸计算(元素空间尺寸):
    element 空间高度 = 内容高度(包括了height+padding+border) + 外边距
    element 空间宽度 = 内容宽度(包括了width+padding+border) + 内边距 + 边框 + 外边距

    内盒尺寸计算(元素大小):
    element 高度 = 内容高度(包括了height+padding+border)
    element 宽度 = 内容宽度(包括了height+padding+border)

    IE6以下版本其内容真正的宽度是width,padding,border。

    box-sizing:
    前面讲到在IE传统盒模型下,边框和内边距都包含在宽度和高度内。而在标准的浏览器中,宽度和高度仅仅包含了内容宽度,除去了边框和内边距,这样就为web设计处理增添了很多麻烦。比如我们需要一个100px的元素,元素有10px的内边距,1px的边框,在W3C标准盒模型下就必须要做一番加减了,最后得出内容宽度为100-20-2=78px,而在IE传统盒模型下却只需要声明盒子内容等于100px,内边距与边框自动算在里面。为了解决这个问题,css3增添了一个盒模型属性box-sizing,能够事先定义盒模型的尺寸解析方式。

    box-sizing:content-box | border-box | inherit
    content-box:默认值,让元素维持W3C的标准盒模型。
    border-box:此值会让元素维持IE传统盒模型。
    inherit:此值使元素继承父元素的盒模型模式。

    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta charset="utf-8" />
    <title></title>
    <style>
    div{
    100px;
    height:100px;
    background:hsla(360,50%,30%,0.5);
    padding:10px;
    border:10px solid red;
    box-sizing:content-box;
    }
    </style>
    </head>
    <body>
    <div>sldfkdslml</div>
    </body>
    </html>
    结果:总宽度为100+20+20=140px

    如改为:
    div{
    100px;
    height:100px;
    background:hsla(360,50%,30%,0.5);
    padding:10px;
    border:10px solid red;
    box-sizing:border-box;
    }
    结果:总宽度为100px(内边距和边框包含在内部)

    在IE传统盒模型(border-box)下,盒子大小不变。
      IE6以下版本对盒模型的解析模式虽然不符合W3C的标准规范,但这种方式并不是一无是处,它也有好的一面:不管如果修改元素的边框或者内边距大小,都不会影响元素盒子的总尺寸,也就不会打乱页面的整体布局。而在标准浏览器下,按照W3C规范对盒模型的解析,一旦修改了元素的边框或者内边距,就会影响元素的盒子尺寸,也就不得不重新计算元素的盒子尺寸,从而影响到整个页面的布局。

     

     

     

     

     

     

     

  • 相关阅读:
    谈谈toLocaleString()
    如何理解NaN?
    Element--->>>最新骨架屏Skeleton使用
    自定义select组件
    微信小程序之配置业务域名踩过的坑
    Vue watch监听 date中的变量 与 数组或者对象的数据变化
    Vue + Element table的@select方法获取当table中的id值都相同时,获取他们索引
    Vue + Element table中的某行触发enter事件后,使该行disabled
    Vue + Element tree树形控件的懒加载使用
    Vue web使用LeapFTP 上传到服务器
  • 原文地址:https://www.cnblogs.com/lily2015/p/4661337.html
Copyright © 2020-2023  润新知