深入CSS盒模型 | 青训营笔记

简介: 由内到外分别由内容(content)即蓝色部分,内边距(padding)即绿色部分,边框(border)即浅黄色部分,外边距(margin)即深黄色四大部分组成,下面我将为读者从各个组成部分与盒模型分类两个角度来具体讲解盒模型。

掌握盒模型是掌握布局的前提,它的构成如下图所示

1.webp.jpg

由内到外分别由内容(content)即蓝色部分,内边距(padding)即绿色部分,边框(border)即浅黄色部分,外边距(margin)即深黄色四大部分组成,下面我将为读者从各个组成部分盒模型分类两个角度来具体讲解盒模型。

组成部分

组成部分我主要针对内边距边框以及外边距

内边距

语法

内边距padding,它是内容与边框之间的距离,共有四个方向,可以通过设置来改变每个方向的距离,我通过码上掘金来演示效果


通过上述演示我们知道了可以通过padding设置内边距的大小,而且其值的数量为1~4个,效果各不同,不同数量的设置的效果看如下表格

代码 效果
padding: 10px; 四个方向内边距都为10px
padding: 10px 20px; 上下方向10px,左右方向20px
padding: 10px 20px 30px; 上10px,左右20px,下30px
padding: 20px 10px 40px 30px; 上20px,右10px,下40px,左30px

而演示的效果呈现了盒子的大小不同,这点将会在下文中盒模型分类中介绍具体原因。

注意事项

  1. 行内元素不会将水平padding大小计算在盒模型内,垂直方向不受影响,块级元素padding各个方向都会计算在内
  2. 一些标签元素会内置padding大小,如果需要更改则需要利用优先级进行覆盖
  3. padding不支持负值,但是可以设置百分比,且四个方向的百分比值都是根据宽度计算。

应用

在我的经验里padding经常用于增加点击区域的大小,如果内容过小,用户点击需要点击多次,而了布局也不能更改,内容是由字体大小决定的,所以可以通过改变内边距大小扩大可点击区域,增强用户体验。

我们还可以利用padding百分比值的特性设置一些特定比例的内容,如2:4的头像。

边框

语法

边框border是内边距与外边距之间的夹层,它可以通过三种属性来设置指定容器边框样式、粗细和颜色。

属性 作用
border-width 边框宽度
border-style 边框样式
border-color 边框颜色

也可以对不同方向设置不同的样式例如:border-left-style:solid;设置左侧边框的样式为实线

也可以直接使用border缩写这三种属性,顺序:border:1px solid #ccc;

好玩的边框

可以控制边框样式来绘制三角形,当盒子的高度和宽度都为0的时候就会出现下面的形状

image.png当高度宽度都设置为0的时候,那么其就会呈现以上的效果,如果把三个方向的颜色设置为透明,那么就会成功绘制出一个三角形!! 那么我考一考各位,如何用这种方法绘制一个梯形?

外边距

语法

外边距margin定义了元素周围的空间大小,具有四个方向,与padding数值不同的是它可以使用负值,外边距的演示如下。image.png

注意细节

外边距最需要注意的是其外边距合并的问题,相邻的元素之间的外边距大小遵循一个规则:“正正按大,正负相加,负负最小”,解释一下,当两个元素相邻的时候,其距离按两元素最大的外边距宽度,如果两个元素的外边距大小有正有负,则距离为两个数值之和,如果两个元素的外边距距离都为负值,那么其宽度按最小的值来计算,下面通过演示来体会这个规则image.png

应用

margin最大的使用场景是标题,文本,图片等信息的间隔,让整体的信息流显得很宽阔,这里我不再赘述,下面讲解一下两种盒模型。

盒模型分类

有两种盒模型,其规则各不同,分别为content-boxborder-box,可以通过box-sizing来设置,其中默认值为content-box

content-box

content-box中padding和border不被包含在定义的width和height之内,所以其元素的宽度与高度等于设定的高度与宽度与对应方向的paddingborder的和

例如下面的盒子,默认为content-box

.box {
    width:100px;
    padding:20px;
    border:1px solid black;
}
复制代码

其宽度为:100px+(20px+1px)*2 = 142px

border-box

border-box中padding和border被包含在定义的width和height之内,所以其宽度和高度取决于设定的宽度与高度

.box {
    box-sizing:border-box;
    width:100px;
    padding:20px;
    border:1px solid black;
}
复制代码

其宽度为:100px


相关文章
|
1月前
|
前端开发
CSS语言的盒模型
CSS语言的盒模型
|
10天前
|
移动开发 前端开发 JavaScript
CSS选择器 前端开发入门笔记(十)
CSS选择器 前端开发入门笔记(十)
19 1
|
10天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
18 1
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 078 JavaScript 条件判断语句
条件判断语句是首先要接触的语句。通过条件判断来执行不同的代码块。
|
1月前
|
JavaScript 前端开发 编译器
编程笔记 html5&css&js 077 Javascript 关键字
编程笔记 html5&css&js 077 Javascript 关键字
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 076 Javascript 表达式
编程笔记 html5&css&js 076 Javascript 表达式
|
1月前
|
存储 JavaScript 前端开发
编程笔记 html5&css&js 075 Javascript 常量和变量
编程笔记 html5&css&js 075 Javascript 常量和变量
|
1月前
|
JavaScript 前端开发 程序员
编程笔记 html5&css&js 074 Javascript 运算符
编程笔记 html5&css&js 074 Javascript 运算符
|
1月前
|
JavaScript 前端开发 Java
编程笔记 html5&css&js 073 JavaScript Object数据类型
编程笔记 html5&css&js 073 JavaScript Object数据类型