css基础知识回顾
样式定义
行内样式
行内样式就是写在html 标签内的样式,又称(内联样式)。
语法!
1 | <h1 style="color: red;">行内样式</h1> |
内部样式
内部样式就是写在html被head标签内所包裹中的样式,又称(内部样式)。
语法!
1 | <head> |
外部样式
外部样式就是在外部文件中所定义的样式,并通过link标签在当前页面中引入后放在head标签内使用,又称(外部样式)。
语法!
这里是style.css文件!
1 | h1{ |
这里是在html文件中通过link标签引入外部样式!
1 | <head> |
样式表优先级
- 优先级规则
内联样式>内部样式>外部样式内部样式和外部样式优先级相同,且后者 会 覆盖前者!行内样式优先级最高!
选择器
基本选择器
| 选择器 | 用法 |
|---|---|
id选择器 | #myid |
类选择器 | .myclassname |
标签选择器 | div,h1,p |
相邻选择器 | h1+p |
子选择器 | ul > li |
后代选择器 | li a |
通配符选择器 | * |
属性选择器 | a[rel="external"] |
伪类选择器 | a:hover, li:nth-child |
伪类选择器
| 伪类选择器 | 用法 |
|---|---|
:link | 选中未访问过的链接 |
:visited | 选中已访问过的链接 |
:active | 选中被激活的链接 |
:hover | 选中鼠标指针位于其上方的链接 |
:focus | 选中获得点的元素 |
:lang() | 根据元素的 lang 属性的值来选择元素 |
:enabled | 选择可点击的元素 |
:disabled | 选择不可点击的元素 |
:checked | 选择被选中的元素 |
:root | 选择文档的根元素 |
:target | 选择当前活动的 #id 元素 |
:nth-child() | 根据元素在父元素中的位置来选择元素 |
:nth-last-child() | 根据元素在父元素中的位置来选择元素 |
:nth-of-type() | 根据元素在父元素中的位置来选择元素 |
:nth-last-of-type() | 根据元素在父元素中的位置来选择元素 |
:first-child | 选择父元素的第一个子元素 |
:last-child | 选择父元素的最后一个子元素 |
:first-of-type | 选择父元素的第一个同类子元素 |
:last-of-type | 选择父元素的最后一个同类子元素 |
:only-child | 选择父元素中唯一的子元素 |
:only-of-type | 选择父元素中唯一的同 |
:not() | 否定伪类 |
:empty | 选择没有子元素的元素 |
:is | 将对应的匹配规则应用于多个元素(最高优先级) |
:where | 将对应的匹配规则应用于多个元素(最低优先级) |
:has | 匹配包含对应子元素的父级元素 |
伪元素选择器
| 伪元素选择器 | 用法 |
|---|---|
::first-line | 选中元素的第一行 |
::first-letter | 选中元素的首字母 |
::before | 在元素之前插入内容 |
::after | 在元素之后插入内容 |
::section | 选中文本的颜色 |
::placeholder | 选中input placeholder |
伪类选择器用法
:nth-child
1 | /* :nth-child(2)选取第几个标签,“2可以是你想要的数字” */ |
选择器优先级
简单选择器优先级
这个(1,0,0) 代表权重,最终会通过一一比对选择权重较高的选择器来确定最终的样式! 如果其中一位较高,则后边不在进行比对!
!important > 行内样式 > ID选择器(1,0,0) > 类选择器(0,1,0) > 标签选择器(0,0,1) > 通配符选择器(0,0,0)
复杂选择器优先级
选择器权重格式(a,b,c)- a:
ID选择器的个数 - b:
类 伪类 属性选 择器的个数 - c:
元素 伪元素 选择器的个数
注意: 有权重看权重 没有权重 后来者居上!

CSS三大特性
层叠性如果发生样式冲突,就会根据
选择器优先级进行样式层叠(覆盖)!继承性- 元素会自动拥有其
父元素的样式祖先元素上所设置的某些样式! - 优先
继承离的比较近的元素! text-??font-??line-??color…
- 元素会自动拥有其
优先级!important>行内样式>ID选择器>类选择器>标签选择器>通配符(*)选择器>继承的样式- 复杂
优先级, 需要计算权重!
并集选择器 不参与权重计算!
1 | /* (0,0,2) */ |
CSS样式属性
颜色
rgb() rgba() hsl() hsla() color() transparent inherit
rgb(255,0,0):红绿蓝rgba(255,0,0,0.5):红绿蓝透明度(0 - 1)hsl():色相饱和度亮度hsla():色相饱和度亮度透明度transparent:透明inherit:继承
1 | /* 颜色名 */ |
16进制
ff0000 16进制 每两位表示一个值,最小值为00 最大值为ff! ff->red 00 -> green 00 -> blue!
值越大, 颜色值越亮,相反则越暗!
以下为16进制表示法 0 - f!00 01 02 03 04...09 0a 0b 0c 0d 0e 0f10 11 12 13 14...19 1a 1b 1c 1d 1e 1f
字体
| 属性 | 描述 | 用法 |
|---|---|---|
font-size | 字体大小 | font-size: 14px |
font-weight | 字体粗细 | font-weight: bold(加粗) |
font-style | 字体风格 | font-style: italic(斜体) |
font-family | 字体系列 | font-family: "微软雅黑" |
line-height | 行高 | line-height: 18px (上下间距) |
text-align | 文本对齐方式 | text-align: center / left / right |
text-decoration | 文本修饰 | text-decoration: line-through |
text-indent | 首行缩进 | text-indent: 2 |
letter-spacing | 字符间距 | letter-spacing: 3 |
word-spacing | 单词间距 | word-spacing: 2 |
text-transform | 文本转换 | text-transform: uppercase(大写) / lowercase(小写) / capitalize |
text-overflow | 文本溢出 | text-overflow: clip(裁剪隐藏) / ellipsis(溢出省略号) |
white-space | 空白处理 | white-space: nowrap(不换行) |
vertical-align | 垂直对齐 | vertical-align: baseline / top / text-top / middle / bottom / text-bottom |
text-shadow | 文字阴影 | text-shadow: 0(x),0(y),15px(模糊程度范围),0.8(透明) |
text-wrap | 文本换行 | text-wrap: normal / none / unrestricted / suppress |
word-break | 单词断开 | word-break: normal / break-all / keep-all |
word-wrap | 单词换行 | word-wrap: normal / break-word |
字体系列
font-family
font-family: "微软雅黑", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
1 | font-family: "微软雅黑","宋体", "楷体", "华文彩云"; |
微软雅黑 若没有,者取值为宋体 若没有,则取值为楷体 若没有,则取值为华文彩云!
字体风格
font-style
font-style: normal(默认) / italic(斜体) / oblique(倾斜)
字体粗细
font-weight
font-weight: normal(默认) / bold(加粗) / bolder(更加粗) / lighter(更加细)
字体复合属性
1 | /* 字体大小 字体粗细 字体风格 字体系列 */ |
字体间距
letter-spacing
letter-spacing: normal(默认) / 正数(增加间距) / 负数(减少间距)
文本修饰
text-decoration
text-decoration: none(默认) / underline(下划线) / overline(上划线) / line-through(删除线)
文本缩紧
text-indent
text-indent: 2(首行缩进)
字体行高
line-height
line-height: normal(默认) / 正数(增加行高) / 负数(减少行高)
文本对齐_ 水平
text-align
text-align: left(默认) / right(右对齐) / center(居中)
文本对齐_垂直
居中对齐: 对于单行文本通过height=line-height即可!底部对齐:line-height=(height x 2) - font-size
垂直对齐
vertical-align
vertical-align: baseline(默认) / top(顶部对齐) / middle(居中对齐) / bottom(底部对齐)作用: 用于指定同一行元素之间,或表格单元格内文字的垂直对齐方式!
注意: vertical-align 不可以控制块元素!
文本阴影
text-shadow
text-shadow: 0(x),0(y),15px(模糊程度范围),0.8(透明)
列表属性
| 属性 | 描述 | 用法 |
|---|---|---|
list-style-type | 列表项标记 | list-style-type: none(无标记) / disc(实心圆) / circle(空心圆) / square(实心方块) |
list-style-image | 列表项标记 | list-style-image: url(图片地址) |
list-style-position | 列表符号位置 | list-style-position: inside(里) / outside(外) |
list-style | 复合属性 | list-style: none inside url(图片地址); |
边框属性
| 属性 | 功能 | 属性值 |
|---|---|---|
border-width | 边框宽度 | CSS长度值 |
border-style | 边框样式 | none(无边框) / dotted(点线) / dashed(虚线) / solid(实线) / double(双线) / groove(3D凹槽) / ridge(3D凸槽) / inset(3D内凹) / outset(3D外凸) |
border-color | 边框颜色 | 颜色值 |
border | 复合属性 | border: 1px solid #000; |
border-radius | 边框圆角 | CSS长度值 |
border-top-left-radius | 左上角圆角 | CSS长度值 |
border-top-right-radius | 右上角圆角 | CSS长度值 |
border-bottom-left-radius | 左下角圆角 | CSS长度值 |
table属性
| 属性 | 功能 | 属性值 |
|---|---|---|
border-collapse | 边框合并 | collapse(默认) / separate(不合并) |
border-spacing | 边框间隔 | CSS长度值 |
caption-side | 标题位置 | top(默认) / bottom |
empty-cells | 空单元格 | show(默认) / hide |
table-layout | 控制表格的列宽 | auto(默认) / fixed |
背景属性
| 属性 | 功能 | 属性值 |
|---|---|---|
background-color | 背景颜色 | 颜色值 |
background-image | 背景图片 | url(图片地址) |
background-repeat | 背景重复 | repeat(默认) / repeat-x(横向) / repeat-y(纵向) / no-repeat(不重复) |
background-position | 背景定位 | left(默认) / center / right / top / bottom / x轴坐标 / y轴坐标 |
background-attachment | 背景固定 | scroll(默认) / fixed(固定) |
background-size | 背景大小 | contain(包含) / cover(覆盖) |
background | 复合属性 | background: url(图片地址) no-repeat center center; |
示例
1 | /* 背景图片 背景大小 背景定位 背景固定 */ |
鼠标属性
| 属性 | 功能 | 属性值 |
|---|---|---|
cursor | 鼠标指针 | auto(默认) / pointer(手型) / move(移动) / help(帮助) / wait(等待) / text(文本) / crosshair(十字) / e-resize(向右) / ne-resize(向右上) / nw-resize(向左上) / n-resize(向上) |
自定义鼠标样式
1 | /* 鼠标指针 */ |
显示属性
| 属性 | 功能 | 属性值 |
|---|---|---|
display | 元素显示 | none(默认) / block(块级元素) / inline(行内元素) / inline-block(行内块级元素) / list-item(列表项) / table(表格) / table-row-group(表格行组) / table-header-group(表格头组) / table-footer-group() |
display
1 | /* 隐藏元素 */ |
长度单位
| 单位 | 含义 |
|---|---|
px | 像素 |
em | 相对于当前元素字体大小(当前元素(font-size)的倍数) |
rem | 相对于根(html)元素字体大小 |
vh | 相对于当前视口高度 |
vw | 相对于当前视口宽度 |
vmin | 取vh和vw的最小值 |
em相对单位
em相对于当前父元素以其父元素字体大小(当前元素或父元素``(font-size)的倍数),如果父元素没有设置字体大小,则向上找,都没有就使用浏览器默认的16px!
rem相对单位
rem相对于根元素(html)字体大小(html元素的font-size),如果根元素没有设置字体大小,则使用浏览器默认的16px`!
vh和vw相对单位
vh和vw相对于当前视口的高度和宽度,如果当前视口
vmin相对单位
vmin取vh和vw的最小值
%百分比单位
%百分比单位相对于父元素的宽度,如果父元素没有设置宽度,则使用浏览器默认的100%!
盒子模型
盒子模型的组成
| 组成 | 含义 |
|---|---|
外边距 | 外边距是指元素与元素周围的空白区域 |
边框 | 边框是指元素的边线,可看作是外边距的外边 |
内边距 | 内边距是指元素内容与元素边框之间的空白区域 |
内容 | 内容是指元素的内容区域,即元素中所包含的文本和图片等 |
宽度 | 宽度是指元素内容区域的宽度,即内容区域的宽度 |
高度 | 高度是指元素内容区域的高度,即内容区域的高度 |
外边距
| 外边距 | 含义 |
|---|---|
margin | 外边距是指元素与元素周围的空白区域 |
margin-top | 元素上外边距 |
margin-right | 元素右外边距 |
margin-bottom | 元素下外边距 |
margin-left | 元素左外边距 |
注意事项
子元素的(margin)外边距是参考父元素的内容区域!对于行内元素设置上下margin是无效的,但是设置左右margin是有效的!应该是vertical-algin: baseline所影响的!
margin问题
margin塌陷- 父元素内的
第一个子元素和最后一个子元素设置上下外边距时,会作用在父元素上! - 可以通过
border: 1px solid red;或者padding: 1px; 来处理此问题!会影响``父元素盒子的大小! overflow: hidden;也可以处理坍塌问题,这种方案不影响父元素盒子大小!
- 父元素内的
margin合并- 上元素设置
margin-bottom和 下面元素设置margin-top时, 所产生的合并问题! - 这种现象只有
上下垂直方向的元素会出现该问题,水平方向不影响!
- 上元素设置
margin塌陷问题示例图
margin合并问题示例图
边框
| 边框 | 含义 |
|---|---|
border | 边框是指元素的边线,可看作是外边距的外边 |
border-width | 边框宽度 |
border-style | 边框样式 |
border-color | 边框颜色 |
border-top | 元素上边框 |
border-right | 元素右边框 |
border-bottom | 元素下边框 |
border-left | 元素左边框 |
内边距
| 内边距 | 含义 |
|---|---|
padding | 内边距是指元素内容与元素边框之间的空白区域 |
padding-top | 元素上内边距 |
padding-right | 元素右内边距 |
padding-bottom | 元素下内边距 |
padding-left | 元素左内边距 |
宽度
| 宽度 | 含义 |
|---|---|
width | 宽度是指元素内容区域的宽度,即内容区域的宽度 |
min-width | 最小宽度 |
max-width | 最大宽度 |
默认宽度
所谓的默认宽度,就是不设置
width属性时,元素所默认的宽度!总宽度= 父的content-box宽度 - 自身左右的margin!内容区的宽度= 父的content-box 宽度 - 自身左右的padding!宽度= 内容区的宽度 - 自身左右的margin- 自身左右的border- 自身左右的padding!
高度
| 高度 | 含义 |
|---|---|
height | 高度是指元素内容区域的高度,即内容区域的高度 |
min-height | 最小高度 |
max-height | 最大高度 |
box-sizing
| 属性 | 功能 | 属性值 |
|---|---|---|
box-sizing | 盒子模型 | `content-box(默认) |
box-sizing | 盒子模型 | border-box |
定位
| 属性 | 功能 | 属性值 |
|---|---|---|
position | 定位 | static(默认) / relative(相对定位) / absolute(绝对定位) / fixed(固定定位) / sticky(性定位) |
static定位
static定位 | 含义 |
|---|---|
static | 默认值,没有定位,元素出现在正常的文档流中 |
relative定位
relative定位 | 含义 |
|---|---|
relative | 相对定位,元素相对于正常位置进行定位 |
top | 元素向上移动的距离 |
right | 元素向右移动的距离 |
bottom | 元素向下移动的距离 |
left | 元素向左移动的距离 |
absolute定位
absolute定位 | 含义 |
|---|---|
absolute | 绝对定位,元素相对于最近的已定位父元素进行定位 |
top | 元素向上移动的距离 |
right | 元素向右移动的距离 |
bottom | 元素向下移动的距离 |
left | 元素向左移动的距离 |
fixed定位
fixed定位 | 含义 |
|---|---|
fixed | 固定定位,元素相对于浏览器窗口进行定位 |
top | 元素向上移动的距离 |
right | 元素向右移动的距离 |
bottom | 元素向下移动的距离 |
left | 元素向左移动的距离 |
sticky定位
sticky定位 | 含义 |
|---|---|
sticky | 粘性定位,元素根据用户的滚动行为进行定位 |
top | 元素向上移动的距离 |
right | 元素向右移动的距离 |
bottom | 元素向下移动的距离 |
left | 元素向左移动的距离 |
浮动
| 属性 | 功能 | 属性值 |
|---|---|---|
float | 浮动 | none(默认) / left / right |
浮动后的影响
- 对兄弟元素的影响: 后面兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面,对前面的兄弟无影响!
- 对父元素的影响: 不能撑起父元素的高度导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元素!
浮动问题示例图
浮动问题处理
- 给父元素指定高度
height。 - 给父元素也设置浮动,带来其他影响。
- 给父元素设置
overflow:hidden。 - 在所有浮动后面添加一个
块级元素并设置clear:both; - 在父元素上加上伪类
::after并其设置样式设置为display:block; clear:both;
1 | .parent::after{ |
清除浮动
| 属性 | 功能 | 属性值 |
|---|---|---|
clear | 清除浮动 | none(默认) / left / right / both |
溢出
可以处理
子元素超出父元素``宽高范围外的溢出问题! 溢出隐藏`滚动…
| 属性 | 功能 | 属性值 |
|---|---|---|
overflow | 溢出 | visible(默认) / hidden / scroll / auto |
隐藏元素
display
通过
none可以控制元素显示与否,元素隐藏后,不会占具原来位置!
| 属性 | 功能 | 属性值 |
|---|---|---|
display | 隐藏元素 | none |
visibility
通过
show | hidden可以控制元素显示与否,元素隐藏后,会占具原来位置!
| 属性 | 功能 | 属性值 |
|---|---|---|
visibility | 隐藏元素 | show / hidden |
opacity
通过
0-1可以控制元素显示与否,0为隐藏,1为显示,,元素隐藏后,会占具原来位置!
| 属性 | 功能 | 属性值 |
|---|---|---|
opacity | 隐藏元素 | 0 |
样式继承
部分样式会继承,如果当前元素没有设置样式,那么会继承父元素的样式!
会继承的css属性:
字体属性 文本属性(
veritcal-align除外) 文字颜色等!
不会继承的css属性:
背景属性边框属性内边距属性宽度属性高度属性溢出属性定位属性浮动属性透明度属性
能继承的属性都不影响布局! 都是和盒子模型没有关系的!
行内元素留白问题
行内元素之间的缝隙原因是由 写代码时 由
回撤之间导致留下来的缝隙!可以通过在父元素上使用
font-size:0px来处理,但是子元素不设置文字大小的话会默认继承父元素的文字大小,这将会受到font-size:0px的影响!不过可以单独针对子元素
设置文字大小!
img元素底部留白问题原因是由
vertical-align: baseline引起, 我们可以改变vertical-align的属性值来解决此问题!








