box-sizing怪异盒子模型在移动端应用

盒子模型不必多少,公认的盒子模型

总宽度=width + padding(padding-left,padding-right) + border(border-left,border-right)

而怪异盒子模型

总宽度=width

哎 语文老师是数学教的 没办法只能表述成这样了,没关系看图,

先看下传统盒子模型 ,结构和代码如下

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style type="text/css">
 7         .big-box{
 8             width: 100px;
 9             height: 100px;
10             margin: 50px auto;
11             background: #cacaca;
12             padding: 10px;
13             border: 5px solid #cf2d28;
14         }
15     </style>
16 </head>
17 <body>
18     <div class="big-box"></div>
19 </body>
20 </html>

是的 很easy的一段代码,页面如下

这很好理解,好的 在浏览器里看下具体的盒子模型,很直观可用区域100px两边padding10px, border5px;

 如果按照上面说的传统盒子计算公式就可以计算出总宽度:100+10*2+5*2 = 130 ,在浏览器指向看总宽度

显示130 X 130 perfect 完全想等。。  

再看下怪异盒子模型啥样的,同样的上面结构和样式,现在在样式里面加个box-sizing:border-box;

页面展示就不看了和上面差不多,看下浏览器中具体的盒子模型

what's up,!! 里面可用区域变成70px,而且也不是像刚才有几种颜色现在里面全是白色,但padding还是10px,border还是5px;

浏览器指向看显示总宽度100px; 和刚才定义的 总宽度=width 符合,

明白了,传统盒子padding和border的宽都是在width外面的,此时width多少就是可用区域多大,

怪异盒子就是padding和border的宽都是在width里面,width减去他俩的宽才是可用区域的宽,搜嘎

看张图

这个如果在网页中做是很好做,但是是在移动端用的,如果用传统布局和单位随着不同和越小的尺寸会把布局打乱掉,好的先布下局

 1         <div class="user-list">
 2             <ul>
 3                 <li>
 4                     <img src="images/user-icon (1).png">
 5                     <span>个人信息</span>
 6                 </li>
 7                 <li>
 8                     <img src="images/user-icon (2).png">
 9                     <span>银行信息</span>
10                 </li>
11                 <li>
12                     <img src="images/user-icon (3).png">
13                     <span>投资记录</span>
14                 </li>
15                 <li class="im-width"></li>
16                 <li>
17                     <img src="images/user-icon (4).png">
18                     <span>取款</span>
19                 </li>
20                 <li>
21                     <img src="images/user-icon (5).png">
22                     <span>注资</span>
23                 </li>
24                 <li class="im-width"></li>
25             </ul>
26         </div>

样式如下

 1 .user-list{
 2     width: 100%;
 3     padding:0 5%;
 4 }
 5 .user-list ul{
 6     width: 100%;
 7     list-style: none;
 8 }
 9 .user-list ul li{ 
10     float: left; 
11     width: 33.3%;
12     height: 7.5em;
13     background: #ececec;
14     text-align: center;
15     -moz-box-sizing: border-box;  
16     -webkit-box-sizing: border-box; 
17     -o-box-sizing: border-box; 
18     -ms-box-sizing: border-box; 
19     box-sizing: border-box; 
20     margin-bottom: 5px;
21     border-right: 5px solid #f2f2f2;
22     position: relative;
23 }
24 .user-list ul li.im-width{ 
25     width: 16.7%; 
26     background: #f2f2f2;
27 }
28 .user-list ul li img{
29     width: 55%;
30 }
31 .user-list ul li span{
32     position: absolute;
33     bottom: 0;
34     left: 0;
35     width: 100%;
36     text-align: center;
37     color: #464646;
38     font-size: 1em;
39 }

此时无论怎么改变屏幕尺寸这个布局是不会改变的,

 下面box-sizing的兼容,虽然现代浏览器支持box-sizing,但有些浏览器还是需要加上自己的前缀,Mozilla需要加上-moz-,Webkit内核需要加上-webkit-,Presto内核-o-,IE8-ms-,所以box-sizing兼容浏览器时需要加上各自的前缀:

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

原文地址:https://www.cnblogs.com/yangjie-space/p/4801936.html