详解CSS中的Box Model盒特性的应用

日期:2021-03-05 类型:科技新闻 

关键词:h5小游戏,h5如何制作,免费h5在线制作,h5页面在线制作,测一测h5

网页页面上显示信息的每一个元素(包含内联元素)都可以以看做1个盒子,即盒实体模型( box model )。请看 Chrome DevTools 里的截图:

能够不言而喻的看出盒实体模型由 4 一部分构成。从内到外各自是:

content -> padding -> border -> margin
按理来讲1个元素的宽度(高宽比以此类推)应当这样测算:

总宽度 = margin-left + border-left + padding-left + width + padding-right + border-right + margin-right
可是不一样访问器(你沒有猜错,便是那个不同寻常的访问器)对宽度的诠释不1样。合乎 W3C 规范的访问器觉得1个元素的宽度只等于其 content 的宽度,其余都要附加算。因而你要求1个元素:

CSS Code拷贝內容到剪贴板
  1. .example {   
  2.     width200px;   
  3.     padding10px;   
  4.     border5px solid #000;   
  5.     margin20px;   
  6. }  

则他最后的宽度应为:

 宽度 = width(200px) + padding(10px * 2) + border(5px * 2) + margin(20px * 2) =  270px;
而在 IE(低于IE9) 下,最后宽度为:

宽度 = width(200px) + margin(20px * 2) = 240px;
我本人感觉 IE 的更合乎人类逻辑思维,终究 padding 叫内边距,边框算作附加的宽度也说不下去。W3C 最终以便处理这个难题,在 CSS3 中加了 box-sizing 这个特性。当大家设定 box-sizing: border-box;  时,border 和 padding 就被包括在了宽高以内,和 IE 以前的规范是1样的。因此,以便防止你同1份 css 在不一样访问器下主要表现不一样,最好是再加:

CSS Code拷贝內容到剪贴板
  1. *, *:before, *:after {   
  2.   -moz-box-sizing: border-box;   
  3.   -webkit-box-sizing: border-box;   
  4.   box-sizing: border-box;   
  5. }  

 

这里也有两种独特状况:

无宽度 —— 肯定精准定位(position: absolute;) 元素
无宽度 —— 波动(float) 元素
它们在网页页面上的主要表现均不占有室内空间(摆脱一般流,觉得像浮在网页页面顶层1样,挪动它们不危害别的元素的精准定位)。

CSS3 Flexible Box Model

有关属值:

box-orient 明确子元素的方位
box-flex  按占比分派父标识的宽度或高宽比室内空间。且值最少为1时起功效。当子元素中有宽度值的情况下,此元素就定宽解决,剩余的室内空间再按占比分派。
box-direction 用来明确子元素的排序次序
box-align 决策了竖直方位室内空间应用,也便是竖直方位上的对齐主要表现。
box-pack 决策了父标识水凭空间的应用

英语的语法:

box-align: start|end|center|baseline|stretch;
box-direction: normal|reverse|inherit;
box-flex: value;
box-flex-group: integer;
box-lines: single|multiple;
box-ordinal-group: integer;
box-orient: horizontal(水平) | vertical(竖直) | inline-axis | block-axis | inherit
box-pack: start|end|center|justify(两边对齐);
box-sizing: content-box|border-box|inherit:
box-shadow: h-shadow v-shadow blur spread color inset;

事例:

应用灵便的盒实体模型器皿内均值分派子元素很非常容易:

CSS Code拷贝內容到剪贴板
  1. .container {   
  2. display: box;   
  3. box-align: stretch;   
  4. box-orient: vertical;   
  5. }   
  6.   
  7. .container span{box-flex:1;}  

案例:CSS 3 Flexible Box Model

留意:

外层务必具备宽度。里层务必具备BFC。

上一篇:公司建网站 返回下一篇:没有了