如果你真的想做一件事,你一定会找到方法;如果你不想做一件事,你一定会找到借口。

盒子模型简单理解(box-sizing)

普通解析:

概念图示和公式:

html结构

<div class="num1"></div>

1、只写 width、height(写背景是为了区分)

.num1{
       width: 200px;
       height: 200px;
       background-color: goldenrod;
     }

样式:(盒子width = width(200px)+ 2*border(0px) +2*padding(0px) = 200px)

2、加上border

.num1{
       width: 200px;
       height: 200px;
       border: 5px solid red;
       background-color: goldenrod;
     }

样式:(盒子width = width(200px)+ 2*border(5px) +2*padding(0px) = 210px)

3、加上padding

.num1{
    width: 200px;
    height: 200px;
    padding: 20px;
    border: 5px solid red;
    background-color: goldenrod;
}

样式:(盒子width = width(200px)+ 2*border(5px) +2*padding(20px) = 250px)

box-sizing解析:

语法

box-sizing: content-box|border-box|inherit;
描述
content-box

这是由 CSS2.1 规定的宽度高度行为。

宽度和高度分别应用到元素的内容框。

在宽度和高度之外绘制元素的内边距和边框。

border-box

为元素设定的宽度和高度决定了元素的边框盒。

就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

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

content-box的解析方式和上面的普通解析方式一样,border-box的解析方式图解如下

内容大小 = width/height - border(left/right) - padding(left/right)

内容宽度 = width- 左border - 左padding - 右padding - 右border

内容高度 = height- 上border - 上padding - 下padding - 下border

CSS书写样式

-webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;

这样可以确保所有的元素都会用这种更直观的方式排版。

不过 box-sizing 是个很新的属性,目前应该像上面代码中那样使用 -webkit-和 -moz- 前缀。这可以启用特定浏览器实验中的特性。同时记住它是支持IE8+的。

 

posted @ 2016-12-22 10:41  wanglehui  阅读(513)  评论(0)    收藏  举报