zoukankan      html  css  js  c++  java
  • html-box-sizing

    CSS 中的 box-sizing 属性定义了 user agent 应该如何计算一个元素的总宽度和总高度

    在 CSS 盒子模型的默认定义里,你对一个元素所设置的 width 与 height 只会应用到这个元素的内容区。
    如果这个元素有任何的 border 或 padding ,绘制到屏幕上时的盒子宽度和高度会加上设置的边框和内边距值。

    这意味着当你调整一个元素的宽度和高度时需要时刻注意到这个元素的边框和内边距。当我们实现响应式布局时,这个特点尤其烦人。

    box-sizing 属性可以被用来调整这些表现:

    • content-box  是默认值。如果你设置一个元素的宽为100px,那么这个元素的内容区会有100px 宽,并且任何边框和内边距的宽度都会被增加到最后绘制出来的元素宽度中。
    • border-box 告诉浏览器:你想要设置的边框和内边距的值是包含在width内的。也就是说,如果你将一个元素的width设为100px,那么这100px会包含它的border和padding,内容区的实际宽度是width减去(border + padding)的值。大多数情况下,这使得我们更容易地设定一个元素的宽高。

    译者注: border-box不包含margin

    Note: 对于新的web站点,你可能希望首先将box-sizing设置为border-box,如下所示:

    * { box-sizing: border-box; }

    这使得处理元素大小的工作变得容易得多,并且通常消除了在布局内容时可能遇到的许多陷阱。然而,在某些情况下,你应谨慎使用这个属性。例如: 你正在编写一个将由其他人使用的共享组件库,如果他们网站的其余部分没有设置此值,他们可能会发现很难使用你的组件库。

    语法

    box-sizing 属性被指定为下面列表中的关键字。

    属性值

    content-box

    默认值,标准盒子模型。 width 与 height 只包括内容的宽和高, 不包括边框(border),内边距(padding),外边距(margin)。注意: 内边距、边框和外边距都在这个盒子的外部。 比如说,.box { 350px; border: 10px solid black;} 在浏览器中的渲染的实际宽度将是 370px。

    尺寸计算公式:

    width = 内容的宽度

    height = 内容的高度

    宽度和高度的计算值都不包含内容的边框(border)和内边距(padding)。

    border-box

     width 和 height 属性包括内容,内边距和边框,但不包括外边距。这是当文档处于 Quirks模式 时Internet Explorer使用的盒模型。注意,填充和边框将在盒子内 , 例如, .box { 350px; border: 10px solid black;} 导致在浏览器中呈现的宽度为350px的盒子。内容框不能为负,并且被分配到0,使得不可能使用border-box使元素消失。

    尺寸计算公式:

    width = border + padding + 内容的宽度

    height = border + padding + 内容的高度

    形式化语法

    content-box | border-box
    

    示例

    本例显示了不同的 box-sizing 值如何改变两个原本相同的元素的渲染尺寸。

    HTML

    <div class="content-box">Content box</div>
    <br>
    <div class="border-box">Border box</div>

    CSS

    div {
       160px;
      height: 80px;
      padding: 20px;
      border: 8px solid red;
      background: yellow;
    }
    
    .content-box { 
      box-sizing: content-box; 
      /* Total  160px + (2 * 20px) + (2 * 8px) = 216px
         Total height: 80px + (2 * 20px) + (2 * 8px) = 136px
         Content box  160px
         Content box height: 80px */
    }
    
    .border-box { 
      box-sizing: border-box;
      /* Total  160px
         Total height: 80px
         Content box  160px - (2 * 20px) - (2 * 8px) = 104px
         Content box height: 80px - (2 * 20px) - (2 * 8px) = 24px */
    }
    

    Result

    规范

    规范 状态 备注
    CSS Basic User Interface Module Level 3
    box-sizing
    Recommendation Initial definition
    初始值 content-box
    适用元素 all elements that accept width or height
    是否是继承属性
    适用媒体 visual
    计算值 as specified
    Animation type discrete
    正规顺序 the unique non-ambiguous order defined by the formal grammar

    浏览器兼容性

    Update compatibility data on GitHub

      Desktop Mobile
      Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
    box-sizing Full support10

    Notes

    打开
    Full support12打开 Full support29打开 Full support8

    Notes

    打开
    Full support7 Full support5.1打开 Full support4

    Notes

    打开
    Full support18

    Notes

    打开
    Full support29打开 Full supportYes Full support6打开 ?
    padding-box

    DeprecatedNon-standard

    No supportNo No supportNo No support1 — 50 No supportNo No supportNo No supportNo No supportNo No supportNo No support4 — 50 No supportNo No supportNo No supportNo
  • 相关阅读:
    力拓题目 5-8-575,657,707,771
    力拓题目1-4-7,217,344,557
    解码,编码,文件的基本操作
    集合类型内置方法和拷贝浅拷贝深拷贝
    列表元祖字典内置方法
    数字类型内置方法
    字符串类型内置方法
    hdu2262 高斯消元
    hdu1757 构造矩阵
    poj1222 高斯消元
  • 原文地址:https://www.cnblogs.com/grj001/p/12223072.html
Copyright © 2011-2022 走看看