盒子模型与元素显示类型
1. 盒子模型
css可以将HTML元素设置成一个个矩形盒子
盒子模型是网页设计中经常用到的一种思维模型,由四个部分构成,从内到外分别为内容区(content)、内边距(padding)、边框(border)和外边距(margin),CSS 为这四个部分提供了一系列相关属性,通过对这些属性的设置可以丰富盒子的表现效果。
盒子模型-内容区域 content
内容区是整个盒子模型的中心,其中存放了盒子的主要内容,这些内容可以是文本、图像等资源。内容区有 width、height、overflow 三个属性,其中 width 和 height 属性用来指定盒子内容区域的宽度和高度,当内容信息过多,超出内容区所设置的范围时,则可以使用 overflow 属性设置溢出内容的处理方式,overflow 属性有四个可选值:
- hidden:表示隐藏溢出的部分;
- visible:表示显示溢出的部分(溢出的部分将显示在盒子外部);
- scroll:表示为内容区添加一个滚动条,您可以通过滑动这个滚动条来查看内容区的全部内容;
- auto:表示由浏览器决定如何处理溢出部分。
盒子模型-边框区域 border
使用 border 属性来设置边框,在内容和内边距的外面,用来包裹和分隔内容的
**边框三要素:**border: 1px solid red
- **边框的粗细:**默认为3px
- **边框的样式:**没有默认值,是必须要填的内容
- **边框的颜色:**默认为黑色
边框的粗细和颜色都有默认值:
边框是环绕内容区和内边距的边界,我们可以使用 border-style、border-width 和 border-color 以及它们的简写属性 border 来设置边框的样式。其中 border-style 属性为边框中最主要的属性,如果没有设置该属性的话,其它的边框属性也会 被忽略。
border-width border-style border-color 最多可以接受四个值
从上开始赋值,顺时针赋值,没有赋值到的就与对面相同
- border-width: 20px 一个值设置上下左右,边框都是20px
- border-width: 20px 40px 两个值分别设置上下和左右,上下边框是20px,左右边框是40px
- border-width: 20px 30px 40px 上边框是20px,左右边框是30px,下边框是40px
- border-width: 20px 30px 40px 50px 上右下左依次赋值
0px 表示这一边没有边框
单边框设置:border-left: 5px dashed red
边框线类型:
值 | 描述 |
---|---|
none | 默认:无边框。 |
solid | 定义实线 |
dotted | 点状边框 |
dashed | 虚线 |
double | 双线 |
盒子模型-内边距区域 padding
内边距是内容区和边框之间的空间
内边框的颜色是继承背景颜色
padding 也支持四个值
我们可以通过 padding-top、padding-right、padding-bottom、padding-left 以及它们的简写属性 padding来设置内容区各个方向上与边框之间的距离。
取值 | 示例 | 含义 |
---|---|---|
一个值 | padding: 10px | 上下左右都设置为10px |
两个值 | padding: 10px 20px | 上下设置为10px,左右设置为20px |
三个值 | padding: 10px 20px 30px | 上设置为10px,左右设置为20px,下设置为30px |
四个值 | padding: 10px 20px 30px 40px | 上设置为10px,右设置为20px,下设置为30px,左设置为40px |
盒子模型-外边距区域 margin
设置边框以外的距离 既盒子与盒子之间的距离
外边距位于盒子模型的最外围,是边框之外的空间,通过外边距可以使盒子与盒子之间不会紧凑的连接在一起,是 CSS 布局中的一种重要手段。
可以使用 margin-top、margin-bottom、margin-left、margin-right 以及它们的简写属性 margin 来设置各个方向上外边距的宽度。
margin-top 正值的时候是盒子自己往下移动
margin-left 正值的时候是盒子自己往右移动
margin-bottom 正值的时候是盒子下方的元素向下移动(向下延伸出一片空白区域)
margin-right 正值的时候是盒子右方的元素向下移动(向下延伸出一片空白区域)
标准盒子:
默认情况下盒子的大小是由内容、内边距、边框共同决定的
在写前端代码时需要具体去量取内容的盒子大小
简而言之,盒子会被撑大
怪异盒子:
box-sizing: border-box;
指定盒模型的尺寸计算方式
content-box:默认值 宽度和高度是用来设置内容区域的
border-box:宽度和高度是用来设置整个盒子的大小
不会因为设置 border padding margin 改变盒子的大小
盒子不会被撑大
2. 元素显示类型
HTML里面有很多的标签 不同的标签在页面上显示效果不一样
两个div之间会换行显示
两个span之间会在一行显示
根据不同标签的不同显示效果,可以把标签分为三类:
2.1 块元素
网页布局 网页的结构搭建
- 独占一行,不与元素共行;
- 可以手动设置宽高
- 默认宽度与与父元素保持一致
- 对于盒子模型属性完全支持
- 例 : body div h1~h6 p ul ol li form, table(默认尺寸由内容决定)
- 块级盒子一般作为一个大的容器 嵌套其他的标签
- 例外:p标签不要嵌套div p h等这种块元素
2.2 行内元素
用于控制页面文本的样式
不会换行显示
可以与其他元素共行显示;
不能手动设置宽高 设置上宽和高也没有效果
左右的外边距、内边距、边框有效
上下的外边距、内边距、边框无效的
行内元素上下的盒子模型是失效 只是说视觉上可以看到 不会影响页面的布局
例 : span label b strong i s u sub sup a
2.3 行内块元素
本质是含内元素 具有块级元素的性质、
对内是块级对外是行内
可以与其他元素共行显示,又能手动调整宽高
例 : img input button (表单控件)