选择器简介

「1.1作用」

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

  1. 找到标签(选对人)
  2. 设置这些标签的样式(做对事)

「1.2分类」

在CSS中,可以根据选择器类型把选择器分为基础选择器复合选择器

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

复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的。

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

基础选择器

「2.1标签选择器」

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

  • 作用: 标签选择器可以把某一类标签全部选择出来,比如所有的div标签和所有的span标签。
  • 优点: 能快速为页面中同类型的标签统一设置样式。
  • 缺点: 不能设计差异化样式,只能选择全部的当前标签。
1
2
3
4
5
6
7
标签名 { 属性1:属性值1;
属性2:属性值2;
属性3:属性值3;
}
div {
color: red;
}

「2.2类选择器」

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

类选择器在HTML中以class属性表示,在CSS中,类选择器以一个点“ . ”号显示。

注意

  • ①类选择器使用 .(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的)。
  • ②可以理解为给这个标签起了一个名字来表示。
  • ③长名称或词组可以使用中横线来为选择器命名。
  • ④不要使用纯数字、中文等命名,尽量使用英文字母来表示。
  • ⑤命名要有意义,尽量使别人一眼就知道这个类名的目的。
1
2
3
4
5
.类名1  {   
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
}
1
<p class="类名1 类名2"> 样例 </p>
  • 各个类名中间用空格隔开
  • 简单理解:就是给某个标签添加了多个类,或者这个标签有多个名字
  • 这个标签就可以分别具有这些类名的样式
  • 从而节省css代码,统一修改也非常方便
  • 多个类名选择器在后期布局比较复杂的情况下,还是较多使用的

「2.3id选择器」

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

HTML元素以id属性来设置id选择器,CSS中id选择器以“ # ”来定义。

  • 注意:id属性只能在每个HTML文档中出现一次
  • 口诀:样式#定义,结构id调用,只能调用一次,别人切勿使用
1
2
3
4
#id名 { 属性1:属性值1; 
属性2:属性值2;
属性3:属性值3;
}
1
<p id="id名">样例</p>

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

  1. 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。
  2. id选择器好比人的身份证号码β、全中国是唯一的,不得重复。
  3. id选择器和类选择器最大的不同在于使用次数上。
  4. 类选择器在修改样式中用的最多,id选择器一般用于页面唯一性的元素上,经常和 JavaScript 搭配使用。

「2.4通配符选择器」

在CSS中,通配符选择器使用*定义,它表示选取页面中所有元素(标签)。

  • 通配符选择器不需要调用,自动就给所有的元素使用样式
  • 特殊情况才使用,后面讲解使用

注意:会匹配页面所有的元素,降低页面响应速度,不建议随便使用

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

例如下面代码,使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距。

1
2
3
4
* {
margin: 0; /* 定义外边距*/
padding: 0; /* 定义内边距*/
}

2.5基础选择器总结

标签选择器 作用 特点 使用情况 用法
标签选择器 可以选出所有相同的标签 不能差异化选择 较多 p {color: red}
类选择器 可以选出一个或多个标签 可以根据需求选择 最多 .nav {color: red}
id选择器 一次只能选择一个标签 id属性在每个html文档中只能出现一次 一般和js搭配 #nav {color: red}
通配符选择器 选择所有标签 选择过多,有部分不需要 特殊情况使用 * {color: red}

每个基础选择器都有使用场景,都需要掌握,如果是修改样式,类选择器是使用最多的

复合选择器

「3.1后代选择器」

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

1
2
3
4
5
6
7
元素1 元素2 {属性:属性值;
属性:属性值;
}

.class h3 {color:red;
font-size:16px;
}

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

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

「3.2子选择器」

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

1
2
3
4
元素1>元素2 {样式声明
属性:属性值;
属性:属性值;
}

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

1
div>p {样式声明}  /*选择div里面所有最近一级p标签元素*/
  • 元素1和元素2中间用大于号隔开
  • 元素1是父级,元素2是子级,最终选择的是元素2
  • 元素2必须是亲儿子,其孙子,重孙之类都不归他管,你也可以叫他亲儿子选择器

「3.3交集选择器」

其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,如h3.special。

1
2
3
4
5
交集选择器是并且的意思,即...又...的意思
比如:
p.one
/* 选择的是: 类名为 .one 的段落标签。
用的相对来说比较少,不建议使用。*/

「3.4并集选择器」

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

并集选择器是个选择器通过英文逗号“,”连接而成,任何形式的选择器都可以作为并集选择器的一部分。

1
元素1,元素2 {样式声明}

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

1
2
3
4
5
6
7
8
9
10
11
ul,div
{
样式声明
}
/*选择ul和div标签元素*/
.one,p,#test
{
color: #F00;
}
/*表示 .one 和 p 和 #test 这三个选择器都会执行颜色为红色。 */
/*通常用于集体声明。 */
  • 元素1和元素2中间用逗号隔开
  • 逗号可以理解为和的意思
  • 并集选择器通常用于集体声明

「3.5链接伪类选择器」

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

伪类选择器书写最大的特点是用冒号:表示,比如:hover,first-child.

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

链接伪类,是利用交集选择器

1
2
3
4
a:link            /*选择所有未被访问的链接*/
a:visited /*选择所有已被访问的链接*/
a:hover /*选择鼠标指针位于其上的链接*/
a:active /*选择活动链接(鼠标按下未弹起的链接)*/

写的时候,他们的顺序尽量不要颠倒,按照lvha的顺序。否则可能引起错误。

注意事项

  1. 为确保生效,请按照LVHA的顺序声明:link visited hover active
  2. 记忆法:love hate或者Lv包包hao
  3. 因为a链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式

实际工作中,很少写全四个状态,一般写法如下:

1
2
3
4
5
6
7
8
9
10
11
/* a是标签选择器  所有的链接 */
a {
font-weight: 700;
font-size: 16px;
color: gray;
text-decoration: none; /* 清除链接默认的下划线*/
}
/* :hover 是链接伪类选择器 鼠标经过 */
a:hover {
color: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */
}

「3.6foucs伪类选择器」

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

焦点就是光标,一般情况下类表单元素才能获取,因此这个选择器也主要针对表单元素来说。

1
2
3
input:foucs {
background-color:yellow;
}

「3.7复合选择器总结」

选择器 作用 特征 使用情况 隔开符号及用法
后代选择器 用来选择后代元素 可以是子孙后代 较多 符号是空格.nav a
子选择器 选择最近一级元素 只选亲儿子 较少 符号是大于.nav>a
交集选择器 选择两个标签交集部分 既是 又是 较少 没有符号 p.one
并集选择器 选择某些相同样式的元素 可以用于集体声明 较多 符号是逗号.nav,a
链接伪类选择器 选择不同状态的链接 跟链接相关 较多 重点记住a{}和a:hover实际开发的写法
foucs伪类选择器 选择获得光标的表单 跟表单相关 较少 input:focus记住这个写法

团队约定

  1. 尽量少用通配符选择器 *
  2. 尽量少用ID选择器
  3. 不使用无具体语义定义的标签选择器
1
2
3
4
5
6
7
8
/* 推荐 */
.jdc {}
li {}
p {}
/* 不推荐 */
*{}
#jdc {}
div{} /*因为div 没有语义,我们尽量少用*/