CSS 选择器
CSS 选择器
如果要在 HTML 中为元素设置 CSS 样式,需要通过 CSS 选择器选择对应的样式,简单来说 CSS 选择器有三种:id 选择器、class 选择器、标签选择器,直接在标签内部写 CSS 就不算选择器了。
这里简单了解一下 CSS 的选择器语法,和尝试一下之前有疑问的地方。
id 选择器
id 选择器,顾名思义,真的是选择器,先看例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Qyc</title>
<style>
#sky {
text-align:center;
color:red;
}
</style>
</head>
<body>
<p id="sky">天选!</p>
<p>没有被选上。</p>
</body>
</html>
其中,通过 id 选择器,为 id = "sky" 的 p 元素添加了样式。
#S {...} 是 id 选择器的使用方式,使用 # 标识 Selector,为选择的 id 的标签添加样式,也只能作用于对应 id 的标签上,使用场景较少。
class 选择器
第二种选择器,class 选择器才是 CSS 的正确打开方式,看例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Qyc</title>
<style>
.center {
text-align:center;
}
.color {
color:#ff0000;
}
</style>
</head>
<body>
<h1 class="center">标题居中</h1>
<p class="center color">段落居中,颜色为红色</p>
</body>
</html>
其中,h1 标签应用了 center 样式居中,p 标签应用了 center 和 color 样式居中和设置颜色为红色。
.S {} 是 class 选择器的使用方式,使用 . 标识 Selector。class 选择器,顾名思义,比较像一个类,类中设置了具体的样式,标签可以通过设置 class 属性去应用这些样式。从这个角度看,class 选择器并不是样式选择标签,而是标签选择不同的 class 样式使用。
标签也可以设置多个 class 属性,如例子中的 p 标签,此时多种样式会一起生效。至于出现冲突的情况,等下再讨论。
class 选择器还可以缩小使用范围,指定某个标签选择它时才有效,如:
<style>
p.center {
text-align:center;
}
.color {
color:#ff0000;
}
</style>
这种语法看起来才顺眼,意思非常明显:center 是属于 p 标签的,只有 p 标签设置 center 时才会生效,而其他标签不会。
标签选择器
标签选择器就更好理解了,直接指定某标签的具体样式:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Qyc</title>
<style>
h1 {
text-align:center;
color:#88e46d;
}
p {
text-align:center;
color:#6b56e6;
}
</style>
</head>
<body>
<h1>标题居中,颜色为绿色</h1>
<p>段落居中,颜色为紫色</p>
</body>
</html>
简单粗暴,可能大伙第一次看 CSS 都是看的这种吧。
这三种选择器的优先级为:id > class > 标签,当然,直接在标签里写样式的优先级还是最高的,即内联样式。
使用多个类且有冲突
回到之前说的问题,当使用多个 class 时,这些 class 内部的样式有冲突,那以哪个为准呢?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Qyc</title>
<style>
.qy{
text-align:center;
/*绿色*/
color:#88e46d;
}
.qy-lz {
text-align:center;
/*紫色*/
color:#6b56e6;
background-color: #88e46d;
}
</style>
</head>
<body>
<h1 class="qy">标题居中,颜色为绿色</h1>
<p class="qy qy-lz">段落居中,颜色为?</p>
</body>
</html>
这个例子中的 p 标签的字体颜色是 qy-lz 样式设置的紫色。为什么呢?这时很容易下意识的认为,在 class 属性设置时,qy-lz 在后面,后面的会覆盖前面的。
但其实并不是这样,class 样式的优先级与指定顺序无关,而是和 class 的定义顺序有关。此处 p 标签显示紫色的原因是,qy-lz 在 qy 之后定义,仅此而已,即使换成
<p class="qy-lz qy">段落居中,颜色为?</p>
效果也是一样的。因此,在定义 CSS 样式时,要把基础的定义在前面,这样以后有额外需求,可以覆盖之前的样式。
总结
简单了解了一下 CSS 选择器,顺便解决了之前的疑惑。
除了以上说的三种选择器外,CSS 还有组合选择符:
- 后代选择器(以空格 分隔)
- 子元素选择器(以大于 > 号分隔)
- 相邻兄弟选择器(以加号 + 分隔)
- 普通兄弟选择器(以波浪号 ~ 分隔)
不过还不到深入研究这些的时候呢。

浙公网安备 33010602011771号