css进阶
更多web开发知识欢迎访问我的专栏>>>
01-复合选择器
定义:由两个或多个基础选择器,通过不同的方式组合而成。
作用:更准确、更高效的选择目标元素(标签)。
后代选择器
后代选择器:选中某元素的后代元素。
选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开。
<style>
div span {
color: red;
}
</style>
<span> span 标签</span>
<div>
<span>这是 div 的儿子 span</span >
</div>
子代选择器
子代选择器:选中某元素的子代元素(最近的子级)。
选择器写法:父选择器 > 子选择器 { CSS 属性},父子选择器之间用 > 隔开。
<style>
div > span {
color: red;
}
</style>
<div>
<span>这是 div 里面的 span</span>
<p>
<span>这是 div 里面的 p 里面的 span</span>
</p>
</div>
并集选择器
并集选择器:选中多组标签设置相同的样式。
选择器写法:选择器1, 选择器2, …, 选择器N { CSS 属性},选择器之间用 , 隔开。
<style>
div,
p,
span {
color: red;
}
</style>
<div> div 标签</div>
<p>p 标签</p>
<span>span 标签</span>
交集选择器
交集选择器:选中同时满足多个条件的元素。
选择器写法:选择器1选择器2 { CSS 属性},选择器之间连写,没有任何符号。
<style>
p.box {
color: red;
}
</style>
<p class="box">p 标签,使用了类选择器 box</p>
<p>p 标签</p>
<div class="box">div 标签,使用了类选择器 box</div>
注意:如果交集选择器中有标签选择器,标签选择器必须书写在最前面。
伪类选择器
伪类选择器:伪类表示元素状态,选中元素的某个状态设置样式。
鼠标悬停状态:选择器:hover { CSS 属性 }
<style>
a:hover {
color: red;
}
.box:hover {
color: green;
}
</style>
<a href="#">a 标签</a>
<div class="box">div 标签</div>
超链接伪类
选择器 | 作用 |
---|---|
:link | 选择尚未被访问的超链接。 |
:visited | 选择已被访问过的超链接。 |
:hover | 鼠标悬停在超链接上时应用的样式。 |
:active | 超链接被点击时应用的样式,通常用于短暂的样式变化,以示被点击。 |
:focus | 超链接获取焦点时应用的样式,通常用于键盘导航时给予用户视觉反馈。 |
提示:如果要给超链接设置以上四个状态,需要按 LVHA 的顺序书写。
经验:工作中,一个 a 标签选择器设置超链接的样式, hover状态特殊设置
a {
color: red;
}
a:hover {
color: green;
}
02-CSS特性
CSS特性:化简代码 / 定位问题,并解决问题
- 继承性
- 层叠性
- 优先级
继承性
继承性:子级默认继承父级的文字控制属性。
描述 | 属性 | 效果 |
---|---|---|
设置文字大小 | font-size | 控制文字的大小。 |
设置文字样式 | font-style | 控制文字的样式,如斜体(italic)或正常(normal)。 |
设置行高 | line-height | 控制行与行之间的距离,实现单行文字的垂直居中。 |
设置字体族 | font-family | 指定用于显示文本的字体系列,可以是单个字体名称或一系列备选字体。 |
设置文字对齐方式 | text-align | 控制文本在盒子中的水平对齐方式,如左对齐、右对齐、居中等。 |
设置文本缩进 | text-indent | 控制段落的首行缩进。 |
设置文本修饰线 | text-decoration | 添加文本的修饰线,如下划线、删除线等。 |
设置文字颜色 | color | 控制文本的颜色。 |
层叠性
特点:
- 相同的属性会覆盖:后面的 CSS 属性覆盖前面的 CSS 属性
- 不同的属性会叠加:不同的 CSS 属性都生效
<style>
div {
color: red;
font-weight: 700;
}
div {
color: green;
font-size: 30px;
}
</style>
<div>div 标签</div>
注意:选择器类型相同则遵循层叠性,否则按选择器优先级判断。
尝试一下>>>
优先级
优先级:也叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则。
<style>
div {
color: red;
}
.box {
color: green;
}
</style>
<div class="box">div 标签</div>
基础选择器
规则:选择器优先级高的样式生效。
公式:通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important
(选中标签的范围越大,优先级越低)
复合选择器-叠加
叠加计算:如果是复合选择器,则需要权重叠加计算。
公式:(每一级之间不存在进位)
(行内样式,id选择器个数,类选择器个数,标签选择器个数)
规则:
- 从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较
- !important 权重最高
- 继承权重最低
练习:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>权重叠加巩固练习</title>
<style>
/* (0, 0, 2, 1) */
.c1 .c2 div {
color: blue;
}
/* (0, 1, 0, 1) */
div #box3 {
color:green;
}
/* (0, 1, 1, 0) */
#box1 .c3 {
color:orange;
}
</style>
</head>
<body>
<div id="box1" class="c1">
<div id="box2" class="c2">
<div id="box3" class="c3">
这行文本是什么颜色的?
</div>
</div>
</div>
</body>
</html>
尝试一下>>>
03-Emmet 写法
Emmet写法:代码的简写方式,输入缩写 VS Code 会自动生成对应的代码。
以下是关于HTML标签的Emmet写法的表格:
说明 | 标签结构 | Emmet写法 |
---|---|---|
创建一个div标签 | <div></div> | div |
创建一个带有class的div标签 | <div class="classname"></div> | div.classname |
创建一个带有id的div标签 | <div id="idname"></div> | div#idname |
创建一个段落标签 | <p></p> | p |
创建一个带有文本内容的段落标签 | <p>Text</p> | p{Text} |
创建一个带有链接的标签 | <a href="#"></a> | a[href="#"] |
创建一个列表项标签 | <li></li> | li |
创建一个无序列表标签 | <ul></ul> | ul |
创建一个有序列表标签 | <ol></ol> | ol |
创建一个图片标签 | <img src="" alt=""> | img[src=""][alt=""] |
这些Emmet写法可以帮助快速生成HTML标签结构。
以下是关于CSS的Emmet写法的表格:
说明 | CSS结构 | Emmet写法 |
---|---|---|
创建一个带有class的样式表 | <link rel="stylesheet" href="style.css"> | link:css |
创建一个内联样式表 | <style></style> | style |
创建一个选择器为.classname的样式规则 | .classname {} | .classname |
创建一个选择器为#idname的样式规则 | #idname {} | #idname |
创建一个选择器为tagname的样式规则 | tagname {} | tagname |
向选择器为.classname的样式规则中添加属性 | .classname { property: value; } | .classname { property: value; } |
向选择器为#idname的样式规则中添加属性 | #idname { property: value; } | #idname { property: value; } |
向选择器为tagname的样式规则中添加属性 | tagname { property: value; } | tagname { property: value; } |
这些Emmet写法可以帮助快速编写CSS样式规则。
04-背景属性
背景图
网页中,使用背景图实现装饰性的图片效果。
- 属性名:background-image(bgi)
- 属性值:url(背景图 URL)
div {
width: 400px;
height: 400px;
background-image: url(./images/1.png);
}
提示:背景图默认有平铺(复制)效果。
平铺方式
属性名:background-repeat(bgr)
属性值 | 效果 |
---|---|
repeat | 默认值,背景图像在水平和垂直方向上重复。 |
repeat-x | 背景图像在水平方向上重复,垂直方向不重复。 |
repeat-y | 背景图像在垂直方向上重复,水平方向不重复。 |
no-repeat | 背景图像不重复,仅在盒子内显示一次。 |
space | 背景图像沿着盒子的边缘平铺,且图像之间有空白间隔,使得图片不会重叠。 |
round | 背景图像沿着盒子的边缘平铺,且图像会被缩放以适应整数倍的尺寸。 |
div {
width: 400px;
height: 400px;
background-color: pink;
background-image: url(./images/1.png);
background-repeat: no-repeat;
}
背景图位置
属性名:background-position(bgp)
属性值:水平方向位置 垂直方向位置
- 关键字
以下是关于背景图位置的关键字的表格:
关键字 | 位置 |
---|---|
top | 图片顶部对齐 |
bottom | 图片底部对齐 |
left | 图片左侧对齐 |
right | 图片右侧对齐 |
center | 图片居中对齐 |
top left | 图片左上角对齐 |
top right | 图片右上角对齐 |
bottom left | 图片左下角对齐 |
bottom right | 图片右下角对齐 |
这些关键字可以帮助你控制背景图在元素中的位置。
- 坐标
- 水平:正数向右;负数向左
- 垂直:正数向下;负数向上
div {
width: 400px;
height: 400px;
background-color: pink;
background-image: url(./images/1.png);
background-repeat: no-repeat;
background-position: center bottom;
background-position: 50px -100px;
background-position: 50px center;
}
提示:
- 关键字取值方式写法,可以颠倒取值顺序
- 可以只写一个关键字,另一个方向默认为居中;数字只写一个值表示水平方向,垂直方向为居中
背景图缩放
作用:设置背景图大小
属性名:background-size(bgz)
常用属性值:
-
关键字
- cover:等比例缩放背景图片以完全覆盖背景区,可能背景图片部分看不见
- contain:等比例缩放背景图片以完全装入背景区,可能背景区部分空白
-
百分比:根据盒子尺寸计算图片大小
-
数字 + 单位(例如:px)
div {
width: 500px;
height: 400px;
background-color: pink;
background-image: url(./images/1.png);
background-repeat: no-repeat;
background-size: cover;
background-size: contain;
}
提示:工作中,图片比例与盒子比例相同,使用 cover 或 contain 缩放背景图效果相同。
背景图固定
作用:背景不会随着元素的内容滚动。
属性名:background-attachment(bga)
属性值:fixed
body {
background-image: url(./images/bg.jpg);
background-repeat: no-repeat;
background-attachment: fixed;
}
背景复合属性
属性名:background(bg)
属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分顺序)
div {
width: 400px;
height: 400px;
background: pink url(./images/1.png) no-repeat right center/cover;
}
尝试一下>>>
05-显示模式
显示模式:标签(元素)的显示方式。
作用:布局网页的时候,根据标签的显示模式选择合适的标签摆放内容。
块级元素
特点:
- 独占一行
- 宽度默认是父级的100%
- 添加宽高属性生效
行内元素
特点:
- 一行可以显示多个
- 设置宽高属性不生效
- 宽高尺寸由内容撑开
行内块元素
特点:
- 一行可以显示多个
- 设置宽高属性生效
- 宽高尺寸也可以由内容撑开
转换显示模式
属性:display
以下是关于转换显示模式的表格:
属性值 | 效果 |
---|---|
block | 将元素显示为块级元素,使元素呈现为一个块,独占一行,可以设置宽度和高度,可容纳其他元素。 |
inline | 将元素显示为内联元素,使元素呈现为行内元素,不独占一行,只占据内容所需的空间,不可设置宽高。 |
inline-block | 将元素显示为内联块元素,元素呈现为行内元素但可以设置宽度和高度,与其他行内元素在一行显示。 |
none | 隐藏元素,使元素不可见且不占据空间。 |
flex | 将元素设置为弹性容器,使其子元素成为弹性项目,可利用弹性布局方式控制元素的排列和对齐方式。 |
grid | 将元素设置为网格容器,使其子元素成为网格项目,可利用网格布局方式控制元素的排列和对齐方式。 |
inline-flex | 将元素设置为内联弹性容器,使其子元素成为弹性项目,可利用弹性布局方式控制元素的排列和对齐方式。 |
inline-grid | 将元素设置为内联网格容器,使其子元素成为网格项目,可利用网格布局方式控制元素的排列和对齐方式。 |
这些属性值可用于控制元素的显示模式,从而实现不同的布局效果。