盒子模型
盒子模型(box model)
网页的布局指就是将元素摆放到网页的不同的位置
布局就得先确定元素的大小
在网页中每一个元素都是一个矩形,或者可以直接将其想象为是一个盒子、每一个盒子,都由以下几个部分组成:
- 内容区(content)
- 内容区在元素最内部,用来容纳子元素
- 内容区的大小由width和height设置
- 内边距(padding)
- 内容区和边框之间的距离称为内边距
- 边框(border)
- 边框是盒子边界,离开边框就属于盒子的外部了
- 边框会影响到盒子可见框的大小
- 外边距(margin)
- 盒子与盒子之间的距离称为外边距
- 外边距不会影响盒子的大小,但是它会影响盒子的位置
- 内容区(content)
设置边框:
要设置边框,涉及到三个样式
- border-width 边框的宽度
- 10px 20px 30px 40px 上 右 下 左
- 10px 20px 30px 上 左右 下
- 10px 20px 上下 左右
- 10px 上下左右
- 除了border-width以外,也可以通过border-xxx-width来分别设置某个边框的宽度,xxx可以是top right bottom left
- border-color 边框的颜色
- 同理
- border-style 边框的样式
- 同理
- solid 实线
- dotted 点状虚线
- dashed 虚线
- double 双线
- border-width 边框的宽度
border 简写属性,可以同时设置边框的三个样式
border:10px red solid;单独设置某边
border-top:10px red solid;
padding同理
margin同理
由于我们的浏览器默认是按照自左到右,自上向下的顺序来排列元素的所以当我们设置上和左外边距时,是改变元素自身的位置但是设置下和右时,会改变其他元素的位置
可见框
- 盒子的可见框指可见的部分,大小由内容区、内边距、边框决定
- box-sizing 用来指定盒子可见框的计算方式
- 可选值:
- content-box 默认值,width和height用来设置内容区的大小
- border-box 设置该值后,width和height用来设置盒可见框的大小
外边距的折叠
- 垂直方向的相邻外边距会发生外边距折叠的现象
- 兄弟元素间外边距会取较大值(这样设计是为了避免两个元素之间的距离过远)
- 父子元素间子元素外边距会传递给父元素
外边距自动计算
可以将margin的值设置为auto,设置auto后,元素的外边距由浏览器自动计算
当我们将margin-left或margin-right中的一个设置为auto时,则浏览器会自动使其尽量的大
如果将margin-left和margin-right同时设置为auto,则浏览器会使元素左右的外边距相同,也就是元素会在其父元素水平居中
默认情况下,垂直外边距设置为auto时,浏览器会自动取0为外边距
行内元素的盒子模型
- 内容区
- width height
- 行内元素的大小被内容撑开
- 无法通过width和height来设置行内元素宽度高度
- 内边距
- padding
- 行内元素可以设置内边距,但是垂直方向的内边距不会影响布局
- 边框
- border
- 行内元素可以设置边框,但是垂直方向的边框不会影响页面的布局
- 外边距
- margin
- 行内元素可以设置水平方向的外边距