天天看点

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

文章目录

  • 1 CSS基础选择器
    • 1.1 选择器的分类
    • 1.2 标签选择器
    • 1.3 类选择器
    • 1.4 id选择器
    • 1.5 通配符选择器
    • 1.6 基础选择器总结
  • 2 CSS的复合选择器
    • 2.1 什么是复合选择器
    • 2.2 后代选择器
    • 2.3 子选择器
    • 2.4 并集选择器
    • 2.5 伪类选择器
    • 2.6 链接伪类选择器
    • 2.7 :focus 伪类选择器
    • 2.8 复合选择器总结
  • 3 属性选择器
  • 4 结构伪类选择器
    • 4.1 选择第n个孩子
    • 4.2 nth-child(n)
    • 4.3 nth-of-type()
    • 4.4 nth-child和nth-of-type的区别
    • 4.5 结构伪类选择器小结
  • 5 伪元素选择器
    • 5.1 案例:经过盒子显示遮罩层
    • 5.2 伪元素清除浮动

1 CSS基础选择器

CSS 选择器参考手册 (w3school.com.cn)

选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用。 简单来说,就是选择标签用的。

1.1 选择器的分类

选择器分为基础选择器和复合选择器两个大类,我们这里先讲解一下基础选择器。

  • 基础选择器是由单个选择器组成的
  • 基础选择器又包括:标签选择器、类选择器、id 选择器和通配符选择器

1.2 标签选择器

标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。

语法:

标签名{
    属性1: 属性值1; 
    属性2: 属性值2; 
    属性3: 属性值3; 
    ...
}
           

示例:将所有div的背景颜色设置为红色

div {
	background-color: "red";
}
           
  • 作用:标签选择器可以把某一类标签全部选择出来,比如所有的

    <div>

    标签和所有的

    <span>

    标签。
  • 优点:能快速为页面中同类型的标签统一设置样式。
  • 缺点:不能设计差异化样式,只能选择全部的当前标签。

1.3 类选择器

如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器

类选择器在 HTML 中以 class 属性表示,在 CSS 中,类选择器以一个点

.

号显示。

语法

.类名 {
    属性1: 属性值1; 
    属性2: 属性值2; 
} 
           

结构需要用class属性来调用 class 类的意思

例如,将所有拥有 red 类的 HTML 元素均为红色。

<!DOCTYPE html>
<html token string">"en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>基础选择器之类选择器</title>
    <style>
        /* 类选择器口诀: 样式点定义  结构类(class)调用  一个或多个 开发最常用*/
      .red {
          color: red;
      }
      .star-sing {
        color: green;
      }
      .memeda {  
         color: pink;
      }
    </style>
</head>
<body>
    <ul>
        <li class="red">冰雨</li>
        <li class="red">来生缘</li>
        <li>李香兰</li>
        <li class="memeda">生僻字</li>
        <li class="star-sing">江南style</li>
    </ul>
    <div class="red">我也想变红色</div>
</body>
</html>
           
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

① 类选择器使用

.

(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的)。

② 可以理解为给这个标签起了一个名字,来表示。

③ 长名称或词组可以使用中横线来为选择器命名。

④ 不要使用纯数字、中文等命名,尽量使用英文字母来表示。

⑤ 命名要有意义,尽量使别人一眼就知道这个类名的目的。

⑥ 命名规范:见附件( Web 前端开发规范手册.doc)

除了单个类名外,我们也可以以给一个标签指定多个类名,从而达到更多的选择目的。 这些类名都可以选出这个标签.

多类名使用方式

(1) 在标签class 属性中写 多个类名

(2) 多个类名中间必须用空格分开

(3) 这个标签就可以分别具有这些类名的样式

多类名使用场景

(1) 可以把一些标签元素相同的样式(共同的部分)放到一个类里面.

(2) 这些标签都可以调用这个公共的类,然后再调用自己独有的类.

(3) 从而节省CSS代码,统一修改也非常方便.

<div class="pink fontWeight font20">亚瑟</div>
<div class="font20">刘备</div>
<div class="font14 pink">安其拉</div>
<div class="font14">貂蝉</div>
           
  • 各个类名中间用空格隔开
  • 简单理解:就是给某个标签添加了多个类,或者这个标签有多个名字
  • 这个标签就可以分别具有这些类名的样式
  • 从而节省CSS代码,统一修改也非常方便.
  • 多类名选择器在后期布局比较复杂的情况下,还是较多使用的

1.4 id选择器

id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。

HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以

#

来定义

注意:id 属性只能在每个 HTML 文档中出现一次。

语法

#id名 {
    属性1: 属性值1; 
    ...
}
           

例如,将 id 为 nav 元素中的内容设置为红色。

#nav {
    color:red;
}
           

id选择器和类选择器的区别

① 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。

② id 选择器好比人的身份证号码,全中国是唯一的,不得重复。

③ id 选择器和类选择器最大的不同在于使用次数上。

④ 类选择器在修改样式中用的最多,id 选择器一般用于页面唯一性的元素上,经常和 JavaScript 搭配使用。

1.5 通配符选择器

在 CSS 中,通配符选择器使用

*

定义,它表示选取页面中所有元素(标签)

语法

* {
    属性1: 属性值1; 
    属性2: 属性值2; 
}
           

通配符选择器不需要调用, 自动就给所有的元素使用样式

特殊情况才使用,后面讲解使用场景(以下是清除所有的元素标签的内外边距)

* {
    margin: 0;
    padding: 0;
}
           

1.6 基础选择器总结

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
  • 每个基础选择器都有使用场景,都需要掌握
  • 如果是修改样式, 类选择器是使用最多的

2 CSS的复合选择器

2.1 什么是复合选择器

在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建在基础选择器之上,对

基本选择器进行组合形成的。

  • 复合选择器可以更准确、更高效的选择目标元素(标签)
  • 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
  • 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等

2.2 后代选择器

后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

语法:

上述语法表示选择元素 1 里面的所有元素 2 (后代元素)。

例如:

  • 元素1 和 元素2 中间用空格隔开
  • 元素1 是父级,元素2 是子级,最终选择的是元素2
  • 元素2 可以是儿子,也可以是孙子等,只要是元素1 的后代即可
  • 元素1 和 元素2 可以是任意基础选择器

2.3 子选择器

子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素

语法:

上述语法表示选择元素1 里面的所有直接后代(子元素) 元素2。

例如:

  • 元素1 和 元素2 中间用 大于号 隔开
  • 元素1 是父级,元素2 是子级,最终选择的是元素2
  • 元素2 必须是**亲儿子,**其孙子、重孙之类都不归他管. 你也可以叫他 亲儿子选择器

2.4 并集选择器

并集选择器可以选择多组标签, 同时为他们定义相同的样式。通常用于集体声明.

并集选择器是各选择器通过英文逗号

,

连接而成,任何形式的选择器都可以作为并集选择器的一部分。

语法:

上述语法表示选择元素1 和 元素2。

例如:

  • 元素1 和 元素2 中间用逗号隔开
  • 逗号可以理解为和的意思
  • 并集选择器通常用于集体声明

2.5 伪类选择器

伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。

伪类选择器书写最大的特点是用冒号

:

表示,比如 :hover 、 :first-child 。

因为伪类选择器很多,比如有链接伪类、结构伪类等,所以这里先给大家讲解常用的链接伪类选择器。

2.6 链接伪类选择器

  1. 为了确保生效,请按照

    LVHA

    的循顺序声明 :

    link -> :visited -> :hover -> :active

    。不能颠倒顺序!
    CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
  2. 记忆法:love hate 或者 lv 包包 hao 。
  3. 因为 a 链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。

链接伪类选择器实际工作开发中的写法:

/* a 是标签选择器 所有的链接 */ 
a { 
    color: gray;
}
/* :hover 是链接伪类选择器 鼠标经过 */
a:hover { 
    color: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */
}
           

案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>复合选择器之链接伪类选择器</title>
    <style>
        /* 1.未访问的链接 a:link  把没有点击过的(访问过的)链接选出来 */
        a:link {
            color: #333;
            text-decoration: none;
        }

        /*2. a:visited 选择点击过的(访问过的)链接 */
        a:visited {
            color: orange;
        }

        /*3. a:hover 选择鼠标经过的那个链接 */
        a:hover {
            color: skyblue;
        }

        /* 4. a:active 选择的是我们鼠标正在按下还没有弹起鼠标的那个链接 */
        a:active {
            color: green;
        }
    </style>
</head>

<body>
    <a href="#">小猪佩奇</a>
    <a href="http://www.xxxxxxxx.com">未知的网站</a>
</body>

</html>
           

2.7 :focus 伪类选择器

:focus

伪类选择器用于选取获得焦点的表单元素。

焦点就是光标,一般情况

<input>

类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。

input:focus { 
 	background-color:yellow;
}
           

2.8 复合选择器总结

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

3 属性选择器

属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器。

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3新增属性选择器</title>
    <style>
        /* 必须是input 但是同时具有 value这个属性 选择这个元素  [] */
        /* input[value] {
            color:pink;
        } */
        /* 只选择 type =text 文本框的input 选取出来 */
        input[type=text] {
            color: pink;
        }
        /* 选择首先是div 然后 具有class属性 并且属性值 必须是 icon开头的这些元素 */
        div[class^=icon] {
            color: red;
        }
        section[class$=data] {
            color: blue;
        }
        div.icon1 {
            color: skyblue;
        }
        /* 类选择器和属性选择器 伪类选择器 权重都是 10 */
    </style>
</head>
<body>
    <!-- 1. 利用属性选择器就可以不用借助于类或者id选择器 -->
    <!-- <input type="text" value="请输入用户名">
    <input type="text"> -->
    <!-- 2. 属性选择器还可以选择属性=值的某些元素 重点务必掌握的 -->
    <input type="text" name="" id="">
    <input type="password" name="" id="">
    <!-- 3. 属性选择器可以选择属性值开头的某些元素 -->
    <div class="icon1">小图标1</div>
    <div class="icon2">小图标2</div>
    <div class="icon3">小图标3</div>
    <div class="icon4">小图标4</div>
    <div>我是打酱油的</div>
    <!-- 4. 属性选择器可以选择属性值结尾的某些元素 -->
    <section class="icon1-data">我是安其拉</section>
    <section class="icon2-data">我是哥斯拉</section>
    <section class="icon3-ico">哪我是谁</section>
</body>
</html>
           

4 结构伪类选择器

结构伪类选择器主要根据文档结构来选择器元素, 常用于根据父级选择器里面的子元素

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

4.1 选择第n个孩子

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>CSS3新增结构伪类选择器</title>
        <style>
            /* 1. 选择ul里面的第一个孩子 小li */
            ul li:first-child {
                background-color: pink;
            }
            /* 2. 选择ul里面的最后一个孩子 小li */
            ul li:last-child {
                background-color: green;
            }
            /* 3. 选择ul里面的第2个孩子 小li */
            ul li:nth-child(2) {
                background-color: skyblue;
            }
            ul li:nth-child(6) {
                background-color: purple;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>我是第1个孩子</li>
            <li>我是第2个孩子</li>
            <li>我是第3个孩子</li>
            <li>我是第4个孩子</li>
            <li>我是第5个孩子</li>
            <li>我是第6个孩子</li>
            <li>我是第7个孩子</li>
            <li>我是第8个孩子</li>
        </ul>
    </body>
</html>

           

4.2 nth-child(n)

nth-child(n) 选择某个父元素的一个或多个特定的子元素(重点)

  • n 可以是数字,关键字和公式
  • n 如果是数字,就是选择第 n 个子元素, 里面数字从1开始…
  • n 可以是关键字:even 偶数,odd 奇数
  • n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略 )
  • 只写n的话表示遍历所有的元素(从0到超过范围),可以根据这个构造公式
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

隔行变色:

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>CSS3新增结构伪类选择器-nth-child</title>
        <style>
            /* 1.把所有的偶数 even的孩子选出来 */
            ul li:nth-child(even) {
                background-color: #ccc;
            }
            /* 2.把所有的奇数 odd的孩子选出来 */
            ul li:nth-child(odd) {
                background-color: gray;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>我是第1个孩子</li>
            <li>我是第2个孩子</li>
            <li>我是第3个孩子</li>
            <li>我是第4个孩子</li>
            <li>我是第5个孩子</li>
            <li>我是第6个孩子</li>
            <li>我是第7个孩子</li>
            <li>我是第8个孩子</li>
        </ul>
    </body>
</html>
           

4.3 nth-of-type()

使用起来和

nth-child()

一样的,只不过是将指定元素进行排序然后选择,比

nth-child()

好用一些

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>CSS3新增选择器nth-type-of</title>
        <style>
            ul li:first-of-type {
                background-color: pink;
            }
            ul li:last-of-type {
                background-color: pink;
            }
            ul li:nth-of-type(even) {
                background-color: skyblue;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>我是第1个孩子</li>
            <li>我是第2个孩子</li>
            <li>我是第3个孩子</li>
            <li>我是第4个孩子</li>
            <li>我是第5个孩子</li>
            <li>我是第6个孩子</li>
            <li>我是第7个孩子</li>
            <li>我是第8个孩子</li>
        </ul>
    </body>
</html>
           

4.4 nth-child和nth-of-type的区别

区别:

  1. nth-child 对父元素里面所有孩子排序选择(序号是固定的) 先找到第n个孩子,然后看看是否和E匹配
  2. nth-of-type 对父元素里面指定子元素进行排序选择。 先去匹配E ,然后再根据E 找第n个孩子
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>CSS3新增选择器nth-type-of</title>
        <style>
            /* nth-child 会把所有的盒子都排列序号 */
            /* 执行的时候首先看  :nth-child(1) 之后回去看 前面 div */
            section div:nth-child(1) {
                background-color: red;
            }
            
            /* nth-of-type 会把指定元素的盒子排列序号 */
            /* 执行的时候首先看  div指定的元素  之后回去看 :nth-of-type(1) 第几个孩子 */
            section div:nth-of-type(1) {
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <!-- 区别 -->
        <section>
            <p>光头强</p>
            <div>熊大</div>
            <div>熊二</div>
        </section>
    </body>

</html>
           

4.5 结构伪类选择器小结

  • 结构伪类选择器一般用于选择父级里面的第几个孩子
  • nth-child 对父元素里面所有孩子排序选择(序号是固定的) 先找到第n个孩子,然后看看是否和E匹配
  • nth-of-type 对父元素里面指定子元素进行排序选择。 先去匹配E ,然后再根据E 找第n个孩子
  • 关于 nth-child(n) 我们要知道 n 是从 0 开始计算的,要记住常用的公式
  • 如果是无序列表,我们肯定用 nth-child 更多
  • 类选择器、属性选择器、伪类选择器,权重为 10。

5 伪元素选择器

伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构。

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

注意:

  • before 和 after 创建一个元素,但是属于行内元素
  • 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
  • 语法:

    element::before {}

  • before 和 after 必须有 content 属性
  • before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素
  • 元素选择器和标签选择器一样,权重为 1

div::after

权重为2

5.1 案例:经过盒子显示遮罩层

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>伪元素选择器使用场景2-仿土豆网显示隐藏遮罩案例</title>
        <style>
            .tudou {
                position: relative;
                width: 444px;
                height: 320px;
                background-color: pink;
                margin: 30px auto;
            }

            .tudou img {
                width: 100%;
                height: 100%;
            }

            .tudou::before {
                /* 这个必须得加 */
                content: '';
                /* 隐藏遮罩层 */
                display: none;
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: rgba(0, 0, 0, 0.4) url(images/arr.png#pic_center) no-repeat center;
            }

            /* 当我们鼠标经过了 土豆这个盒子,就让里面before遮罩层显示出来 */
            .tudou:hover::before {
                /* 而是显示元素 */
                display: block;
            }
        </style>
    </head>
    <body>
        <div class="tudou">
            <img src="images/tudou.jpg" alt="" />
        </div>
    </body>
</html>
           

5.2 伪元素清除浮动

清除伪元素的方法

  1. 额外标签法也称为隔墙法,是 W3C 推荐的做法。
  2. 父级添加 overflow 属性
  3. 父级添加after伪元素
  4. 父级添加双伪元素

额外标签法也称为隔墙法,是 W3C 推荐的做法。

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
注意: 要求这个新的空标签必须是块级元素。

添加after伪元素清除浮动

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器

双伪元素清除浮动

CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器
CSS -- CSS选择器精讲(基础选择器,符合选择器,属性选择器,结构伪类选择器,伪选择器)1 CSS基础选择器2 CSS的复合选择器3 属性选择器4 结构伪类选择器5 伪元素选择器