• CSS3 的 boxsizing 属性


    在 CSS2 的盒模型中,一个元素的渲染宽度(rendered width)等于 width + padding + border,渲染高度等于 height + padding + border。元素的渲染大小就是它在网页中实际占用的盒子大小。

    这种规定在很多时候让人很头疼。比如你想让子元素的 padding- 10px 和 border- 2px,然后填满父元素的所有空间,这时候简单地来一个 100% 和 height: 100% 是会溢出的。当父元素的大小是固定的时候,我们很容易计算出正确的 width 和 height。但是,如果父元素的大小也不是固定的,那就头大了。

    实际上,如果是块级元素,不设置子元素的 width 也会自动填满父元素的全部宽度。但是不设置 height 的话,子元素的高度由自己内容来确定。更加糟糕的是,对于 textarea 等元素,不设置它的 width 的话也不会自动填满父元素的宽度。

    利用 CSS3 的 box-sizing 属性可以简单的解决这类问题。box-sizing 属性用于设置元素的盒模型,默认值为 content-box 就是 CSS2 的盒模型,而还有一个取值 border-box 表示让元素的 width 和 height 属性包括 padding 和 border 的大小,即让宽度和高度分别与渲染宽度和渲染高度等同。例如:

    <!doctype html>
    <html><head>
    <style type='text/css'>
    body {
       400px;
      height: 400px;
      border: 10px solid green; 
    }
    textarea {
      box-sizing: border-box;
      -moz-box-sizing: border-box;
       100%;
      height: 100%;
      border: 4px solid #246;
      padding: 10px;
    }
    </style>
    </head><body>
    <textarea>
    hello box-sizing
    </textarea>
    </body></html>
    

    IE8+,Chrome 10+,Safari 5.1+,Opera 9.5+ 都支持 box-sizing 属性。而 Firefox 从 2.0 开始就支持 -moz-box-sizing,但一直没把前缀去掉。

    参考资料:
    [1] W3C CSS3-UI - ‘box-sizing’ property
    [2] MDN - CSS - box-sizing
    [3] Can I use CSS3 Box-sizing?
    [4] CSS-Tricks - Box Sizing
    [5] Start using CSS box-sizing today
    [6] 学习CSS布局 - box-sizing

  • 相关阅读:
    11.7表单事件 定时器
    11.5真11.6 函数调用 数组字符串的定义和方法
    11.2 面向对象 解析
    11.1 js数据类型 作用域 原型链
    10.31js中级作用域链和this
    定时器
    生出对象的方式
    学习this
    字符串
    全局方法
  • 原文地址:https://www.cnblogs.com/zoho/p/3116451.html
Copyright © 2020-2023  润新知