标题目录
- 基本概念
- [CSS 的三种位置](#CSS 的三种位置)
- 常用值
- 字体处理
- 元素的显示模式
- 盒子模型
- 浮动
- 页面版心
- 定位
-
- [静态定位(默认值) position:static](#静态定位(默认值) position:static)
- [相对定位 position:relative](#相对定位 position:relative)
- [绝对定位 position:absolute](#绝对定位 position:absolute)
- [固定定位 position:fixed](#固定定位 position:fixed)
- 布局方式总结
- 元素的放大与过渡
- 溢出处理
- CSS属性总结表
基本概念
- CSS(Cascading Style Sheet)级联样式表,用来控制页面布局与页面样式
- 可以修改颜色、大小、位置、层级、动画等等
- CSS3 中多种颜色模式/阴影/边框圆角/渐变/动画/过渡/响应式/弹性布局/多列布局都是 CSS3 的新特性
CSS 的三种位置
行内样式
写在 HTML 元素的开始标签里,只对当前行生效
特点:只能给一个元素使用,复用性差
<h4 style="color:red;">我是标题</h4>
内部样式
写在 head 标签中的 style 标签里,对当前页面所有元素生效
特点:随着当前页面加载而加载,加载速度快,首页常用
<head>
<style>
/* 标签名选择器 */
h1 {
color:red;
}
</style>
</head>
外部样式
写在独立的.css 文件中,在html 文件中引入外部的.css 文件
-
rel:必写属性,表示引入文件是什么类型 stylesheet 样式表
-
href:要引入 CSS 文件的路径
<html> <head> <link rel="stylesheet" href="01.css"> </head> </html>
特点:可以被多个页面共享,复用性强,常用于二三级页面
优先级
- 渲染同一个元素,样式不同会叠加生效,比如背景色和文字颜色会同时生效
- 如果渲染的样式相同,按照如下优先级排序:
!important > 行内样式>(内部样式=外部样式)>浏览器自带的样式 - 内部样式与外部样式优先级一样,后写的样式会把之前的样式覆盖掉
选择器
-
标签名选择器:选中指定标签的所有元素,写法: 标签名 { CSS 样式 }
-
类选择器:选中指定的一类元素,写法: .class值 { CSS 样式 }
-
id 选择器:选中指定的一个元素,写法: #id值 { CSS 样式 }
-
伪类选择器:
- 选中超链接未被访问时时的状态,写法:a:link{ CSS 样式 }
- 选中超链接已被访问时的状态,写法:a:visited{ CSS 样式 }
- 选中元素的悬停状态(非超链接独有),写法: div:hover{ CSS 样式 }
- 选中超链接激活时的状态,写法:a:active{ CSS 样式 }
- 注意:a 标签伪类的顺序: :link :visited :hover :active
-
并列选择器:选中满足所有选择器条件的元素,是"与"的关系,写法: #d1:hover { CSS 样式 }
-
群组选择器:选中多种不同的元素,是"或"的关系,,写法: #id 值,.class 值,标签名{ CSS 样式 }
-
通用选择器:选中所有元素,写法: *{ CSS 样式 }
-
后代选择器:选中祖先元素中包含的所有后代元素,写法: div span{ CSS 样式 }
-
子代选择器:选中父元素中下的直接子元素,写法: div>span{ CSS 样式 }
<head> <meta charset="UTF-8"> <title>02_CSS选择器</title> <style> /* 1.标签名选择器:选中此标签名对应的所有元素 */ h4 { color: red; }/* 2.id选择器:选中指定id值的唯一一个元素 */ #d1 { width: 100px; height: 100px; background-color: aqua; } /* 3.类选择器 */ .msg { color: white; } .error { background-color: red; } .success { background-color: green; } /* 4.伪类选择器:选中元素的某种状态 */ a:link { /* 超链接未被访问过的状态 */ color: gray; } a:visited { /* 超链接已经被访问过的状态 */ color: green; } a:hover { /* 元素悬停的状态 */ color: orange; } a:active { /* 超链接激活时的状态 */ color: red; } /* 5.并列选择器:必须紧挨在一起写,表示同时满足两个选择器条件才会生效,是"与"的关系 */ #d1:hover {/* 元素悬停的状态 */ background-color: yellow; } /* 6.群组选择器:用逗号隔开,只要满足其中一个选择器的条件就会生效,是"或"的关系 */ h4,#d1,.error { border: 5px solid black; } /*7.后代选择器:选中包含在此元素中的所有后代元素(子 孙 重孙...)*/ #d2 span { background-color: purple; } /*8.子代选择器:选中当前元素的直接子元素,不会继续向下选择 */ #d2>div>p>span { color: white; } </style>
常用值
- px:像素,屏幕上最小的一个发光点
- viewport 视口 用来展示页面内容的完整窗口
- height: 100vh;100% viewport height 撑满全屏高
- width: 100vw; 100% viewport width 撑满全屏宽
- 颜色表示法:
- 单词表示,如:red
- 十六进制表示法,如:color:#0000FF;
- 前两位表示红色,中间两位表示绿色,最后两位表示蓝色
- 简写的十六进制表示法,如:color:#00F;
- 三种颜色两位数字都相同,才可以简写
- rgb(red,green,blue)表示法,如:color:rgb(0,0,255);
- 值的范围是 0~255
- rgba(red,green, blue,alpha)表示法,如:color:rgba(0,0,255,0.5);
- 不透明度,0 表示完全透明,1 表示完全不透明
- 不透明度,0 表示完全透明,1 表示完全不透明
字体处理
color: 设置文字颜色
font-size :设置文字的大小
- 谷歌浏览器默认字体大小 16px,最小 12px,低于 12px 也以 12px 显示
font-family:"幼圆"; 设置文字字体
- 执行顺序是从前向后执行的
- 字体名称要使用引号包裹
- 商用字体要考虑到版权问题
- 尽量少用奇怪的字体,因为客户可能会没有
(字体文件在电脑 C 盘的"Fonts"文件夹中
打开"计算机"->C 盘-> "Windows"-> "Fonts"即可看到所有已安装的字体)
text-decoration :设置文本修饰线
- underline 下划线
- none 去掉所有修饰线
- line-through 添加一条删除线
line-height:设置文本行高
- 称为行间距,指的是行与行文本之间的距离
- 如果需要单行文字在元素内垂直居中,可以让行高为元素的高度即可
text-align :设置块级元素内文本的水平对齐方式
- 对齐方式:left 左对齐 / center 居中对齐 / right 右对齐
text-shadow: 20px 20px 5px red;
- 文本阴影:X 轴偏移量 Y 轴偏移量 羽化值 阴影颜色
font-weight:字重(字体粗细),可取值:
- normal 400 正常体
- lighter 300 细体
- bold 600 粗体
font-style:italic; 文字倾斜效果
元素的显示模式
- 块级元素:display:block;
- 排列方式:按照书写的顺序,从上往下依次排列
- 特点:独占一行,还可以设置宽高
- 常见标签:div h1~h6 p form table ul ol li...
- 行内元素:display:inline;
- 排列方式:按照书写顺序从左往右依次排列
- 特点:共占一行,不能设置宽高
- 常见标签:span a i b s...
- 行内块元素:display:inline-block;
- 排列方式:按照书写顺序从左往右依次排列
- 特点:共占一行,可以修改宽高
- 常见标签:input button
- 元素消失:display:none;
- 特点:元素使用此方式消失后,不再占据页面(文档流)的布局空间
盒子模型
一个 HTML 元素,需要占用页面的布局空间,这个空间由以下几个部分组成:
- content 内容区域 元素本身的大小
- padding 内间距 元素内容与边框之间的距离
- border 元素的边框
- margin 外间距 元素与元素之间的距离
涉及到四个方向 left 左 right 右 top 上 bottom 下
外间距(margin)
-
外间距的写法:
- margin-bottom:50px;设置单侧外间距(top上 / right右 / bottom下/ left左)
- margin:10px;四个方向都是 10px
- margin:10px 20px;上下 10px 左右 20px
- margin:10px 20px 30px;上 10px 左右 20px 下 30px
- margin:10px 20px 30px 40px;上 10px 右 20px 下 30px 左 40px
- margin: 0 auto;上下 0 左右居中
块级元素左右外间距计算成等值,能实现水平居中效果
-
规律:按照 上右下左 顺时针 依次赋值 没有的找对门
-
外间距指的元素外部与其它元素之间的距离
- 块级与行内块元素四个方向的外间距均生效
- 行内元素的左右外间距可以用,上下外间距不生效
- 父子贴边问题:给父元素加 BFC 结界 overflow:hidden;
第 1 个子元素的上外间距与最后 1 个子元素的下外间距都会包裹在父元素范围之内 - 相邻兄弟间在垂直方向上如果有重叠的外间距,取最大值显示
边框(border)
设置边框:border:1px solid #000; 粗细 线型 颜色
设置某一个方向的边框:border-top: 1px solid #000; 设置上边框的粗细 线型 颜色
去掉边框: border:none; 或者 border:0;
线型:solid 单实线 dashed 虚线 dotted 点状线 double 双实线...
边框圆角: border-radius: 100px;
- 数值越大,角越圆
- 边框圆角为正方形高度的一半,可以切圆形
- 边框圆角为长方形高度的一半,可以切胶囊型
内间距(padding)
-
内间距的写法:
- padding-top: 50px; 设置单侧内间距(top 上/right 右/bottom 下/left 左)
- padding:10px; 四个方向都是 10px
- padding:10px 20px; 上下 10px 左右 20px
- padding:10px 20px 30px; 上 10px 左右 20px 下 30px
- padding:10px 20px 30px 40px; 上 10px 右 20px 下 30px 左 40px
-
规律:按照 上右下左 顺时针 依次赋值 没有的找对门
-
内间距指的是元素内容与边框之间的距离
- 块级与行内块元素的四个方向的内间距均生效
- 行内元素的左右内间距正常生效,但上下内间距不生效
-
内间距使用场景
让元素内部距离外层父级元素的边有点距离,主要为了美化,如:
- 输入框的文字不要贴边显示
- 文本卡片内容不要贴边显示
切换盒子模型计算方案
- box-sizing: border-box;边框盒子
- 效果:加内间距与边框都不会让元素变大,都算在元素设置的 width 与 height 中

浮动
- float:left; 左浮动,向父级元素的左侧边界靠拢
- float:right; 右浮动,向父级元素右侧边界靠拢
浮动特点:
- 浮动布局可以让元素横向排列
- 浮动后的元素会释放原有的布局空间且不再支撑父元素的高度
- 如果一个父元素中所有的子元素都浮动了,父元素会高度坍塌(失高)
解决方案:给父元素设置 overflow:hidden;
会根据子元素浮动后的实际高度给父元素自动填充高度,解决失高问题
页面版心
版心指的是一般在页面中固定宽度且居中,用来显示页面主要内容的一块区域
.center 或 .container {
width: 1000px;
margin: 0 auto;
}
定位
静态定位(默认值) position:static
就是默认的布局,元素根据默认的显示模式排列(块级元素竖着排,行内/行内块元素横着排)
- 使用其他定位属性后,可以让元素通过 top/bottom/left/right 四个属性移动
- 层级 z-index:使用定位后,元素发生重叠时可以调整层级
- z-index 的值越大,层级越高,值大的元素会覆盖值小的元素
- 值为整数值,没有任何单位
- 默认值是 auto,可以看作是层级 0,z-index 还可以取负值
注意:静态定位不能使用上述属性
相对定位 position:relative
移动参照物:元素自己原来的位置
- 不会释放布局空间,还可以支撑父元素,不影响父级
- 与外间距 margin 的区别:margin 会影响其他元素,相对定位不会挤开兄弟元素,但可能会遮盖
- 常用于需要微调元素位置时使用
绝对定位 position:absolute
移动参照物:离自己最近的使用了非静态定位属性的上层元素
(会一路向上找,终点是 html 根元素)
- 绝对定位的元素会释放布局空间
- 小技巧:(子绝父相)子元素使用绝对定位,父级设置相对定位后可以变成子元素移动的参照物
固定定位 position:fixed
移动参照物:html 根元素(浏览器窗口)
- 固定定位也会释放布局空间
- 我们可以利用固定定位实现页面固定广告与撑满全屏的效果
布局方式总结
| 浮动布局 float:left/right | 元素会释放布局空间 |
| 浮动布局 float:left/right |
| 浮动布局 float:left/right |
| 浮动布局 float:left/right |
|------------------------------------|-----------|
| 如果所有子元素都浮动,父元素会高度坍塌 |
| 浮动元素可以使用 margin 微调自己的位置 |
| 用途:可在页面中实现"两端对齐"或"横置"的效果 |
| 行内/行内块元素从左往右依次排列,一行放不下才换行 |
| 默认的静态定位元素都是紧密排列的,没有大的空隙和元素堆叠的现象 |
| 不会释放布局空间 |
| 可以使用 top bottom left right 调整自己的位置 |
| 可以使用 z-index 调整层级 |
| 用途:微调自己的位置,但不会挤开其它元素 |
| 用途:为使用绝对定位的后代元素提供定位参照物 |
| 会释放布局空间 |
| 可以使用 top bottom left right 调整自己的位置 |
| 可以使用 z-index 调整层级 |
| 用途:在页面上覆盖到其它元素上方的指定位置 |
| 会释放布局空间 |
| 可以使用 top bottom left right 调整自己的位置 |
| 可以使用 z-index 调整层级 |
| 用途:制作覆盖整个窗口的遮罩层、或制作页面固定广告 |
元素的放大与过渡
-
transform: scale(n):变换(倍数) 变换至原来的n倍
- n>1放大n倍
- n=1 大小不变
- 0<n<1缩小n倍
- 0缩小到看不见
-
transform: rotate(720deg):元素旋转,单位deg,正数顺时针转,多个值使用空格隔开
-
transition: ns:添加过渡,让变换有一点过渡时间,一瞬间完成变换太过太突兀
-
注意:过渡要加给div,而不是悬停,否则离开 div 时没有过渡,效果不好
div {
width: 100px;
height: 100px;
background-color: #f00;
margin: 100px auto 0;
/* 过渡时间必须写在元素本身,否则不悬停时没有过渡效果 */
transition: 2s;
}
div:hover {
background-color: #0aa1ed;
border-radius: 50px;
transform:scale(2) rotate(720deg);
}
溢出处理
元素溢出
如果内容超出了预设的区域,我们称之为"溢出",溢出一般有以下几种处理方式
- overflow: visible; 默认值 溢出可见
- overflow: hidden; 溢出隐藏,超出部分裁掉 可解决父子贴边问题与父元素失高问题
- overflow: scroll; 两个方向都有滚动条
- overflow: auto; 自动给溢出的方向设置滚动条
溢出文本替换为省略号
- white-space: nowrap; 强制不换行
- overflow: hidden; 溢出隐藏
- text-overflow: ellipsis;溢出文本替换为省略号
CSS属性总结表
分类 | 属性名 | 作用 | 属性值 | 备注 |
---|---|---|---|---|
文本处理 | color | 字体颜色 | red rgb rgba hex | 单词 rgb rgba 16进制 |
文本处理 | font-size | 字体大小 | 16px | 像素值 |
文本处理 | text-decoration | 文本修饰线 | line-through | 删除线 |
文本处理 | text-decoration | 文本修饰线 | underline | 下划线 |
文本处理 | text-decoration | 文本修饰线 | none | 去除所有修饰线 |
文本处理 | line-height | 行高 | 40px | 像素值 |
文本处理 | text-align | 文本水平对齐方式 | center | 水平居中对齐 |
文本处理 | text-align | 文本水平对齐方式 | left | 水平左对齐 |
文本处理 | text-align | 文本水平对齐方式 | right | 水平右对齐 |
文本处理 | font-family | 字体型号 | "微软雅黑","宋体","华文彩云" | 从前往后依次取值,可以写多个值 |
文本处理 | font-weight | 字体字重 | normal 400 | 正常体 |
文本处理 | font-weight | 字体字重 | lighter 300 | 细体 |
文本处理 | font-weight | 字体字重 | bold 600 | 粗体 |
文本处理 | white-space | 文本溢出换成省略号 | nowrap | 强制不换行 |
文本处理 | overflow | 文本溢出换成省略号 | hidden | 溢出部分隐藏 |
文本处理 | text-overflow | 文本溢出换成省略号 | ellipsis | 超出的文本替换成省略号 |
背景处理 | background-color | 背景颜色 | red rgb rgba | 单词 rgb rgba 16进制 |
背景处理 | background-image | 背景图 | url(图片路径) | 所在区域需要设置宽高 |
背景处理 | background-image | 渐变效果 | linear-gradient(颜色1, 颜色2, 颜色3...) | 只有颜色渐变 |
背景处理 | background-image | 渐变效果 | linear-gradient(角度值, 颜色1, 颜色2...) | 带角度的渐变 |
背景处理 | background-size | 背景图尺寸 | 600px 300px 100% 100% | 像素值; 百分比值需注意图片失真问题 |
背景处理 | background-position | 背景图定位 | left top | 默认左上角 先说左右,再说上下 X轴:left左 center中 right右 Y轴:top上 center中 bottom下 |
背景处理 | background-position | 背景图定位 | 150px -50px | 像素值 向右150px 向上50px |
背景处理 | background-repeat | 背景图重复方式 | repeat | 默认值,x轴y轴都重复 |
背景处理 | background-repeat | 背景图重复方式 | repeat-x | 只允许x轴重复 |
背景处理 | background-repeat | 背景图重复方式 | repeat-y | 只允许y轴重复 |
背景处理 | background-repeat | 背景图重复方式 | no-repeat | 不允许重复 |
盒子模型 | box-sizing | 盒子模型计算方案 | content-box | 内容盒子(默认值) |
盒子模型 | box-sizing | 盒子模型计算方案 | border-box | 边框盒子(怪异盒子) |
盒子模型 | padding | 内间距 | 10px | 上右下左四个方向都是10 |
盒子模型 | padding | 内间距 | 10px 20px | 上下:10 左右:20 |
盒子模型 | padding | 内间距 | 10px 20px 30px | 上10 左右20 下30 |
盒子模型 | padding | 内间距 | 10px 20px 30px 40px | 上10 右20 下30 左 40 |
盒子模型 | padding-top | 内间距 | 10px | 上内间距 |
盒子模型 | padding-right | 内间距 | 10px | 右内间距 |
盒子模型 | padding-bottom | 内间距 | 10px | 下内间距 |
盒子模型 | padding-left | 内间距 | 10px | 左内间距 |
盒子模型 | margin | 外间距 | 10px | 上右下左四个方向都是10 |
盒子模型 | margin | 外间距 | 10px 20px | 上下:10 左右:20 |
盒子模型 | margin | 外间距 | 10px 20px 30px | 上10 左右20 下30 |
盒子模型 | margin | 外间距 | 10px 20px 30px 40px | 上10 右20 下30 左 40 |
盒子模型 | margin-top | 外间距 | 10px | 上外间距 |
盒子模型 | margin-right | 外间距 | 10px | 右外间距 |
盒子模型 | margin-bottom | 外间距 | 10px | 下外间距 |
盒子模型 | margin-left | 外间距 | 10px | 左外间距 |
盒子模型 | border | 四个方向的边框 | 1px solid #000 | 综合设置:粗细 线型 颜色 |
盒子模型 | border-top | 上边框 | 1px solid #000 | 综合设置:粗细 线型 颜色 |
盒子模型 | border-right | 右边框 | 1px solid #000 | 综合设置:粗细 线型 颜色 |
盒子模型 | border-bottom | 下边框 | 1px solid #000 | 综合设置:粗细 线型 颜色 |
盒子模型 | border-left | 左边框 | 1px solid #000 | 综合设置:粗细 线型 颜色 |
盒子模型 | border-width | 边框宽度 | 1px | 设置四个方向边框的粗细 |
盒子模型 | border-style | 边框线型 | solid单实线 dashed虚线 dotted点状 double双实线 | |
盒子模型 | border-color | 边框颜色 | red rgb rgba hex | 单词 rgb rgba 16进制 |
盒子模型 | border-{top}-{color} | {上}边框的{颜色} | 设置单个方向边框的单个属性:粗细 线型 颜色 | |
大小处理 | width | 宽度 | 100px 100% | 像素值 百分比 |
大小处理 | height | 高度 | 100px 101% | 像素值 百分比 |
显示模式 | display | 块级元素 | block | 以块级元素的形式显示 |
显示模式 | display | 行内元素 | inline | 以行内元素的形式显示 |
显示模式 | display | 行内块元素 | inline-block | 以行内块元素的形式显示 |
显示模式 | display | 元素消失 | none | 元素消失并释放布局空间 |
隐藏与显示 | background-color | 背景色设为透明色 | background-color: transparent | 只影响背景颜色,不会释放布局空间 |
隐藏与显示 | background-color | 背景色设为透明色 | background-color: rgba(0,0,0,0) | 只影响背景颜色,不会释放布局空间 |
隐藏与显示 | transform:scale(0) | 设置缩放为0 | -- | 让元素缩小到看不见 |
隐藏与显示 | opacity | 透明度 | 0完全透明 1完全不透明 0.5半透明 | 所有内容一起透明,不释放布局空间 |
隐藏与显示 | display | 修改显示模式 | none | 元素消失并释放布局空间 |
溢出控制 | overflow | 控制溢出情况 | visible | 默认值,溢出可见 |
溢出控制 | overflow | 控制溢出情况 | hidden | 溢出隐藏,溢出的部分会被裁剪 |
溢出控制 | overflow | 控制溢出情况 | scroll | 无论是否需要,侧边与下边都有滚动条 |
溢出控制 | overflow | 控制溢出情况 | auto | 自动添加滚动条,需要的时候再加 |
修饰与美化 | list-style | 列表样式 | none | 去掉列表项前标识符 |
修饰与美化 | border-radius | 边框圆角 | 5px 或 10% | 像素值或百分比,四个角弧度统一 |
修饰与美化 | border-radius | 边框圆角 | 10px 30px | 左上右下 右上左下 对角线 |
修饰与美化 | border-radius | 边框圆角 | 10px 20px 30px | 左上 右上左下 右下 |
修饰与美化 | border-radius | 边框圆角 | 10px 20px 30px 40px | 从左上角开始顺时针给四个角设置 |
修饰与美化 | box-shadow | 元素阴影 | 值1: 5px | 必写,阴影的X轴偏移量,默认向右移动 |
修饰与美化 | box-shadow | 元素阴影 | 值2: 5px | 必写,阴影的Y轴偏移量,默认向下移动 |
修饰与美化 | box-shadow | 元素阴影 | 值3: 5px | 羽化值,越大阴影越虚化,默认0,不许负值 |
修饰与美化 | box-shadow | 元素阴影 | 值4: 5px | 扩展半径,越大阴影范围越大,默认0 |
修饰与美化 | box-shadow | 元素阴影 | 值5: #aaa | 阴影颜色 |
浮动 | float | 左浮动 | left | 向父级元素的左侧边界靠拢 |
浮动 | float | 右浮动 | right | 向父级元素的右侧边界靠拢 |
定位 | position | 定位方式 | static | 静态定位(默认值),原来的文档流布局 |
定位 | position | 定位方式 | relative | 相对定位,参照自己原来的位置 |
定位 | position | 定位方式 | absolute | 绝对定位,参照最近的非静态祖先元素 |
定位 | position | 定位方式 | fixed | 固定定位,参照根元素html |
定位 | z-index | 调整层级 | 整数值,无单位,可以有负数 | 数字越大,层级越靠上 |
定位 | top/right/bottom/left | 移动方向 | 像素值 百分比 | 距离参照物移动的距离,负值反方向 |
过渡 | transition | 过渡简写属性 | 最简写执行时间就行,其他都可不写 | 执行时间在前,延迟时间在后,其他没顺序 |
变换 | transform | 旋转 | rotate(30deg) | 元素在二维平面,绕页面中心点旋转 |
变换 | transform | 缩放 | scale() | 同时负责X轴与Y轴的缩放 |