每个存在于可访问性树中的元素都会被浏览器绘制成一个盒子。每个盒子都可以看成由4部分组成,它们分别是 — **元素外边距(margin)**、**元素边框(border)**、**元素内边距(padding)**和**元素内容(content)**。

css盒模型以及如何计算盒子的宽度

盒模型

每个存在于可访问性树中的元素都会被浏览器绘制成一个盒子[1]。

每个盒子都可以看成由4部分组成,它们分别是 — 元素外边距(margin)、元素边框(border)、元素内边距(padding)和元素内容(content)。

元素外边距(margin)

元素外边距(margin)用来控制元素与相邻元素之间间隔大小。

用法:

/*上方对外边距12像素*/margin-top: 12px;/*右方对外边距24像素*/margin-right: 24px;/*下方对外边距6像素*/margin-bottom: 6px;/*左方对外边距3像素*/margin-left: 3px;
/*上方、右方、下方、左方皆对外边距12像素*/margin: 12px;
/*上方、下方对外边距12像素 左方、右方对外边距24像素*/margin: 12px 24px;
/*上方对外边距12像素 右方对外边距24像素 下方对外边距6像素 左方对外边距3像素*/margin: 12px 24px 6px 3px;

按照left与right对应以及top与bottom对应,自动补充缺省值

/*上方对外边距12像素 右方对外边距24像素 下方对外边距6像素 左方对外边距24像素*/margin: 12px 24px 6px;

水平方向相邻元素的margin值不会叠加

margin-horizontal-test

效果图:

垂直方向相邻元素margin值会叠加,最终以两者之间最大值为准

margin-vertical-test

效果图:

利用margin属性使块级元素水平居中

利用margin属性使块级元素水平居中Fatman

效果图:

元素边框(border)

元素边框(border)位于元素外边距与元素内边距之间。

用法:

/*边框样式为实线*/border-style: solid;/*边框宽度为12像素*/border-width: 12px;/*边框颜色为黑色*/border-color: black;/*边框角度为36像素*/border-radius: 36px;
/*边框宽度为12像素 样式为实线 颜色为黑色*/border: 12px solid black;

border的属性也可以像margin一样根据上下左右设置,笔者就不再一一举例了。

利用边框颜色差设置3D按钮

border按钮

效果图:

元素内边距(padding)

元素内边距(padding)是用来定义元素内容距离元素边框之间间隔大小。

内边距和外边距的区别在于 — 外边距位于边框外部,而内边距位于边框内部。

用法:

/*上方对内边距12像素*/padding-top: 12px;/*右方对内边距24像素*/padding-right: 24px;/*下方对内边距6像素*/padding-bottom: 6px;/*左方对内边距3像素*/padding-left: 3px;
/*上方、右方、下方、左方皆对内边距12像素*/padding: 12px;
/*上方、下方对内边距12像素 左方、右方对内边距24像素*/padding: 12px 24px;
/*上方对内边距12像素 右方对内边距24像素 下方对内边距6像素 左方对内边距3像素*/padding: 12px 24px 6px 3px;

padding也可以按照left与right对应以及top与bottom对应,自动补充缺省值

/*上方对内边距12像素 右方对内边距24像素 下方对内边距6像素 左方对内边距24像素*/padding: 12px 24px 6px;

使用padding增大元素的可点击范围

使用padding增大元素的可点击范围    

效果图:

元素内容(content)

当box-sizing属性值为content-box时:

元素内容宽度 === 元素设置宽度

盒子宽度 === 元素左右外边距和 + 元素左右边框宽度和 + 元素左右内边距和 + 元素内容宽度

比如:

div {    width: 100px;    height: 100px;    padding: 20px;    border: 10px solid blue;    margin: 20px;    background-color: red;    box-sizing: content-box;}

20 + 10 + 20 + 100 + 20 + 10 + 20
= 200

整个盒子的宽度为200px,元素内容的宽度值等于width值。

示意图:

当box-sizing属性值为border-box时:

元素内容宽度 === 元素设置宽度 - 元素左右边框宽度和 - 元素左右内边距和

盒子宽度 === 元素左右外边距和 + 元素设置宽度

比如:

div {    width: 100px;    height: 100px;    padding: 20px;    border: 10px solid blue;    margin: 20px;    background-color: red;    box-sizing: border-box;}

20 + 100 + 20
= 140

整个盒子的宽度为140px,元素内容的宽度值等于width值减去padding值和border值。

示意图:


  1. 元素设置display:none后不存在于可访问性树中,不被浏览器绘制。 ↩︎

©著作权归作者所有:来自51CTO博客作者wx60877cc7b61d6的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 今天聊点干货—关于CSS样式来源
  2. 210406 类数组 获取遍历DOM元素 向元素添加文本 获取元素的自定
  3. PHP第一课
  4. CSS的基本语法/选择器优先级/实例演示前端组件样式模块化原理与
  5. NoSQL Redis
  6. (lintcode)第18题 带重复元素的子集
  7. (lintcode)第16题 带重复元素的排列
  8. (lintcode)第452题删除链表中的元素
  9. (lintcode)第5题第k大元素

随机推荐

  1. java网络编程(2)socket通信案例
  2. java运行时数据区域
  3. java集合系列(6)Vector
  4. synchronized的实现原理和应用
  5. java集合系列(3)ArrayList
  6. 设计模式之装饰模式
  7. 学习资源大汇总
  8. 设计模式之享元模式
  9. jvm系列(5)性能监控工具
  10. java集合系列(4)fail-fast机制(面试常问)