DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • html

  • css

    • css选择器
      • css三种引用方式
        • 1.行内式
        • 2.嵌入式
        • 3.外链式
      • css选择器
        • 基本选择器
        • 组合选择器
        • 交集与并集选择器
        • 序列选择器
        • 属性选择器
        • 伪类选择器
        • 伪元素选择器
      • css三大特性
        • 继承性
        • 层叠性
        • 优先级!!
    • css属性设置
    • css网页布局之浮动流
    • css网页布局之定位流
    • css样式实践
    • flex
    • css复习
  • javascript

  • jquery

  • UI库

  • 第一次学vue

  • 第二次学vue

  • 前端
  • css
DC
2023-02-21
目录

css选择器

CSS全称Cascading Style Sheet层叠样式表,是专门用来为HTML标签添加样式的.

# css三种引用方式

三种引入方式的优先级: 行内式 > (嵌入式和外链式 谁在后面谁优先 因为是自上而下解析的 后面覆盖前面的啦)

# 1.行内式

<p style="color: red;font-size: 50px;text-align: center">egon yyds</p>
1

# 2.嵌入式

<head>
    <style>
        p {
            color: red;
            font-size: 50px;
            text-align: center
        }
    </style>
</head>
1
2
3
4
5
6
7
8
9

# 3.外链式

(企业内部使用这种方式!)

<!-- mystyle.css
p {
    color: red;
    font-size: 50px;
    text-align: center
}
-->

<head>
  	<!-- type属性可以不写,默认就是文本类型 -->
    <link rel="stylesheet" href="css/mystyle.css" type="text/css">
</head>
1
2
3
4
5
6
7
8
9
10
11
12

Ps. <style>@import url("css/mystyle.css")</style>
导入式CSS2.1特有的,不是所有浏览器都支持,但也基本不用...  
使用外链式时与导入式不同的是它会在网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会像导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点. 


# css选择器

# 基本选择器

id选择器      类选择器      标签选择器      通配符选择器

▽id选择器

根据指定的id名称,在当前界面中找到对应的 唯一一个 的标签,然后设置属性

<!-- 
在企业开发中如果仅仅只是为了设置样式,通常不会使用id,在前端开发中id通常是留给js使用的
每个标签都可以设置唯一一个id,id就相当于人/标签的身份证,因此在同一界面内id绝不能重复
引用id一定要加#
id的命名只能由字符、数字、下划线组成,且不能以数字开头,更不能是html关键字如p a img等 
-->
<head>
    <style>
        #p1 {
          color: red;
        }
    </style>
</head>

<body>
    <p id="p1">Hello world!</p>
    <p>egon yyds.</p>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

▽类选择器

根据指定的类名称,在当前界面中找到对应的标签,然后设置属性

<head>
    <style>
        .p1 {
            color: red;
        }
        .p2 {
            font-size: 50px;
        }
        .p3 {
            text-decoration: underline;
        }
    </style>
</head>

<body>
  	<!--
    第一行与第三行的颜色都是红色
    第一行与第二行的字体大小都是50px
    第二行与第三行内容有个下划线
		-->
    <p class="p1 p2">窗前明月光</p>
    <p class="p2 p3">疑似地上霜</p>
    <p class="p1 p3">举头望明月</p>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

▽标签选择器

根据指定的标签名称,在当前界面中找到所有该名称的标签,然后设置属性

<!--
只要是HTML的标签都能当做标签选择器
标签选择器选中的是当前界面中的所有标签,而不能单独选中某一标签
标签选择器,无论嵌套多少层都能选中
-->
1
2
3
4
5

▽通配符选择器

选择所有标签

<!--
* {
    属性:值;
}

在企业开发中一般不会使用通配符选择器
理由是:
    由于通配符选择器是设置界面上所有的标签的属性
    所以在设置之前会遍历所有的标签
    如果当前界面上的标签比较多,那么性能就会比较差
-->
1
2
3
4
5
6
7
8
9
10
11

# 组合选择器

后代选择器 相邻兄弟选择器 通用兄弟选择器 子元素选择器

组合选择器 含义
div,p 并集选择器 两个选择器应用于同一个样式
div p 后代选择器 div标签里面所有p标签,不论p标签身处第几层
div>p 子类选择器 div的儿子,不会查找其他嵌套里的标签
div+p 相邻选择器 跟div紧挨着的那个兄弟p元素
div~p 兄弟选择器 div的兄弟,不管是否相邻,只要是同一级别的都行
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<head>
    <style>
        /* 后代选择器 找到div所有的后代 */
        div p {
            color: red;
        }

        /* 相邻兄弟
        选中的是div后面那一个同一级别紧跟着的p标签
        不能选中被隔开的标签 */
        div + p {
            color: green;
        }

        /* 通用兄弟(隔开的兄弟)
        选中的是div后面那一堆同一级别的a标签
        无论有没有被隔开,都可以被选中
        */
        div ~ a {
            color: blue;
        }

        /* 子元素选择器只会查找儿子,不会查找其他嵌套的标签 */
        div > p {
            color: pink;
        }

        /* 不仅可以用标签名称,还可以使用其他选择器,比如id或class */
        .box2 ul p{
            color: orange;
        }
    </style>
</head>
<body>
    <p>111</p>
    <div class="box1">
        <p>粉色</p>
        <p>粉色</p>
        <ul>
            <li>
                <p>红色</p>
            </li>
        </ul>
        <p>粉色</p>
    </div>
    <p>绿色</p>
    <a style="text-decoration: none">蓝色</a>
    <a style="text-decoration: none">蓝色</a>
    <hr>
    <a style="text-decoration: none">蓝色</a>

    <div class="box2">
        <ul>
            <li>
                <p>橙色</p>
            </li>
        </ul>
        <p>粉色</p>
    </div>

</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

# 交集与并集选择器

交集选择器(不常用)      并集选择器

<head>
    <style>
      	/* 交集选择器(不常用)
      	只给包含box1的div标签添加文本蓝色的样式
      	选择器与选择器之间没有任何链接符号
      	选择器可以使用标签名称、id、class
      	*/
        div.box1 {
            color: blue;
        }

        h1.box1 {
            color: green;
        }

      	/* 并集选择器
      	选择h2和h3标签 `,`号表示和的意思
      	*/
        h2, h3 {
            color: pink;
        }
    </style>
</head>
<body>
    <div class="box1">
        <p>蓝色</p>
        <a style="text-decoration: none">蓝色</a>
    </div>

    <h1 class="box1">绿色</h1>
    <h2>粉色</h2>
    <h3>粉色</h3>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 序列选择器

过去的选择器中要选中某个必须加id或class 学习了这9个序列选择器后,不用加id或class,想选中同级别的第几个就选第几个

▽同级别 -- 按顺序 先看是级别中的第几个位置,再看这个位置的标签是否是:左边的那个标签 p:first-child 同级别的第一个,并且得是p标签 p:last-child 同级别的最后一个,并且得是p标签 p:nth-child(n) 自定义同级别的第n个,并且得是p标签 p:nth-last-child(n) 自定义同级别的倒数第n个,并且得是p标签

▽同级别同类型 -- 不受顺序的限制 所谓的类型是指 eg:p标签是一个类型 div标签是一个类型... p:first-of-type 同级别同类型的第一个p标签 p:last-of-type 同级别同类型的最后一个p标签 p:nth-of-type(n) 同级别同类型的第n个p标签 p:nth-last-of-type(n) 同级别同类型的倒数第n个p标签

▽其他 p:only-of-type 同级别可有多个标签,但p标签只有一个 p:only-child 同级别只有一个标签,并且这个标签得是p标签

PS:

/* 奇数 */
ul li:nth-child(2n+1){}
ul li:nth-child(odd){}
/* 偶数 */
ul li:nth-child(2n){}
ul li:nth-child(even){}
/* 小于等于3的位置 */
ul li:nth-child(-n+3){} 
/* 大于等于3的位置 */
ul li:nth-child(n+3){}
/* 除了最后一个li标签 */
ul li:not(:last-child){}
1
2
3
4
5
6
7
8
9
10
11
12
<body>
<!--
现body标签里有四个级别(看缩进嘛)
h1 p p p p p div p是一个级别;div下的p ul是一个级别;
ul下li是一个级别;li下的p是一个级别
-->
    <h1>我是标题</h1>
    <p>我是段落1</p>
    <p>我是段落2</p>
    <p>我是段落3</p>
    <p>我是段落4</p>
    <p>我是段落5</p>
    <div>
        <p>我是段落6</p>
        <ul>
            <li>
                <p>Hello world.学习,学个屁!</p>
            </li>
        </ul>
    </div>
    <p>我是段落7</p>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 属性选择器

[属性名];     其他选择器[属性名];     [属性名=值]
[属性名^=值];     [属性名$=值];     [属性名*=值]

[x]     -- 找到所有包含x属性的标签
[id]     -- 找到所有包含id属性的标签
p[id]     -- 找到所有包含id属性的p标签
p[class="part1"]     -- 找到所有class属性值为part1的p标签
等号表示完全匹配,class的值只能有part1, <p class="part1 part2"></p>是匹配不上
[href^="https"]     -- 找到所有href属性值以https开头的a标签
img[src$="png"]     -- 找到所有src属性值以png结果的img标签
[class*="part1"]      -- 找到所有class属性值中包含part1的标签,类属性值只要有part1这个字符就行啦.
        eg: <p class="aaapart1 part2"></p>
* ^ $ 相当于将属性值当作一个字符串进行的匹配.

<body>
  	<!-- 可以自定义属性 eg: x="111" -->
    <h1 id="id1" x="111">哈哈啊</h1>
    <p id="id2" x="222">我是段落</p>
    <p class="part1">我是段落</p>
    <p class="xxx part2 yyy">我是段落</p>
    <a href="#">我是我</a>
    <a href="http://www.baidu.com">http://www.baidu.com</a>
    <a href="https://www.baidu.com">https://www.baidu.com</a>
    <img src="1.png" alt="">
    <img src="2.jpg" alt="">
    <p>我是段落</p>
    <p>我是段落</p>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 伪类选择器

▽没有访问的超链接a标签样式:
a:link {color: blue;}

▽访问过的超链接a标签样式: 
a:visited {color: gray;}

▽鼠标悬浮在元素上应用样式: 
a:hover {background-color: #ced; }

▽鼠标点击瞬间的样式:
a:active {color: green;}

▽input输入框获取焦点时样式:
input:focus {
     outline: none;
     background-color: #eee;
}

注意:
1> a标签的伪类选择器可以单独出现,也可以一起出现
2> a标签的伪类选择器如果一起出现, 有严格的顺序要求 , 否则失效
     link      visited      hover      active
3> hover是所有其他标签都可以使用的 4> focus只给input标签使用

# 伪元素选择器

两个冒号与一个是一样的,老版本用的是一个冒号,考虑到兼容性推荐使用一个冒号.
先提一嘴( ̄▽ ̄) 伪元素选择器可以清楚浮动!!

▽first-letter: 杂志类文章首字母样式调整 (了解即可)

/* 第一个字的变化 */
p:first-letter {
		font-size: 48px;
}
1
2
3
4

▽before: 用于在元素的内容前面插入新内容
eg: 在所有p标签的内容前面加上一个红色的*

p:before {
 	content: "*";
 	color: red;
}
1
2
3
4

▽after: 用于在元素的内容后面插入新内容
在所有p标签的内容后面加上一个蓝色的?

p:after {
 	content: "?";
 	color: red;
}
1
2
3
4

# css三大特性

# 继承性

给某一个元素设置一些属性,该元素的后代(儿子 孙子...)也可以使用,这个我们就称之为继承性.

敲黑板!!!
1>. 只有以color、font-、text-、line-开头的属性才可以继承
2>. a标签的文字颜色和下划线是不能继承别人的
3>. h标签的文字大小是不能继承别人的,会变大,但是会在原来字体大小的基础上变大

# 层叠性

层叠性指的就是CSS处理冲突的一种能力,即如果有多个选择器选中了同一个标签那么会有覆盖效果.

<!--
层叠性只有在多个选择器选中了同一个标签,然后设置了相同的属性,才会发生层叠性
ps: 通过谷歌浏览器可以查看到,一些属性被划掉了

注意哦,这个涉及到优先级的问题!!
-->
<head>
		<style type="text/css">
        p {
            color: red;
        }
        .ppp {
            color: green;
        }
    </style>
</head>
<body>
		<p class="ppp">我是段落</p>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 优先级!!

当多个选择器选中同一个标签,并且给同一个标签设置相同的属性时,如何层叠就由优先级来确定.

▽1.大前提: 直接选中(一步到位定位到此标签) > 间接选中(即继承而来的)

▽2.如果都是间接选中,那么谁离目标标签比较近,就听谁的

<head>
    <style>
      	/*离目标近*/
        div li{
            color: green;
        }
      	/*离目标远*/
        div ul{
            color: red;
        }
    </style>
</head>
<body>
<div>
    <ul>
        <li>
          	<!-- 字体显示为绿色 -->
            <p class="p1">学习?学个屁!!</p>
        </li>
    </ul>
</div>
</body>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

▽3.如果都是直接选中,并且都是同类型的选择器,那么谁写在后面谁生效         eg: p标签选择器 .p是类选择器 #id1ID选择器 单个选择器 若是多个选择器组合形成的选择器 需要进行权重计算...

▽4.如果都是直接选中,并且是不同类型的选择器,那么就会按照选择器的优先级来层叠
**id > 类 > 标签 > 通配符(也算直接选中) > 继承 > 浏览器默认(即没有设置任何属性) **
        eg:<p id="id1" class="ppp">我是span</p>

▽5.优先级之权重计算         如果都是直接选中,并且混杂了一系列其他的选择器一起使用时,则需要通过计算权重来判定优先级.

<!--
计算方式
    1. id数多的优先级高
    2. id数相同,则判定类数多的优先级高
    3. id数、class数均相同,则判定标签数多的优先级高
    4. 若id数、class数、标签数均相同,则无需继续往下计算了,谁写在后面谁的优先级高
-->
1
2
3
4
5
6
7

▽6优先级之 !important.
!import方式来强制指定的属性的优先级提升为最高,但是不推荐使用.
因为大量使用!import的代码是无法维护的。

<!--
注意:
1. !important只能用于直接选中,不能用于间接选中
2. !important只能用于提升被指定的属性的优先级,其他属性的优先级不会被提升
3. !important必须写在属性值分号的前面
-->
<head>
    <style>
      	/* 最终效果: 红色,字体大小10px */
        .p1{
            color: red !important;
          	font-size: 20px;
        }
        .p1{
            color: green;
          	font-size: 10px;
        }
    </style>
</head>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

html
css属性设置

← html css属性设置→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式