在这节中,我们检查一些最简单的选择器,这些可能是日后工作中频繁使用的。
一个标签选择器通常称为标签选择器或者元素选择器,因为是在你文档中选择HTML的标签/元素。下面例子中,我们使用了span em和strong选择器。
尝试增加CSS规则去选择h1元素去修改它的颜色为蓝色。
span {
background-color: yellow;
}
strong {
color: rebeccapurple;
}
em {
color: rebeccapurple;
}
<h1>Type selectors</h1>
<p>Veggies es bonus vobis, proinde vos postulo essum magis <span>kohlrabi welsh onion</span> daikon amaranth tatsoi tomatillo
melon azuki bean garlic.</p>
<p>Gumbo beet greens corn soko <strong>endive</strong> gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard
greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
<p>Turnip greens yarrow ricebean rutabaga <em>endive cauliflower</em> sea lettuce kohlrabi amaranth water spinach avocado
daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach
</p>
通配符是用*号表示。通配符会把文档中的所有元素(这些元素可能在父元素里面,用后代连接符和其他元素 链接 着)。在下面例子中,我们使用通配符可以移除所有元素的外边距。取代浏览器的默认样式,标题和段落外面的空白,现在所有都闭合在一起了。
* {
margin: 0;
}
<h1>Universal selector</h1>
<p>Veggies es bonus vobis, proinde vos postulo essum magis <span>kohlrabi welsh onion</span> daikon amaranth tatsoi tomatillo
melon azuki bean garlic.</p>
<p>Gumbo beet greens corn soko <strong>endive</strong> gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard
greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
这种做法经常被看作是重置样式表,这会把浏览器所有的样式都去掉。因为通配符会引起全局的改变,我们使用的时候是在非常特殊的情况下,比如下面提到的这种情况。
一个通配符的用法是让选择器更容易阅读、清晰地看它们怎么工作的。比如,如果我们想要选择所有是它们父元素的第一个子元素的后代元素,包括article的元素的第一层级里孩子,让它们变粗,我们可以使用伪元素 :first-child, 以后我们会学习更多关于伪元素和伪 类 元素,就像article元素选择器后面跟的子代选择器。
article :first-child {
font-weight: bold;
}
不管怎样,看到article:first-child这样的选择器都很困惑,是不是会选择所有article元素,如果它是另一个元素的第一个子元素。
为了避免这样的困惑,我们可以给 :first-child这样的伪类元素前面加上通配符,这样这个选择器在做的事情看起来更明显。它在选择 article元素里面所有是第一个子元素的元素,或者是 article元素的子孙后代中排第一的的元素。
article *:first-child {
font-weight: bold;
}
虽然两种写法都是一样的效果,但是可读性大大提升了。
类选择器从打点号开始。它选择的是文档中所有拥有这个类名的元素。下面的例子中有一个类名 highlight,在文档中用了很多次。这些用了这个类名的元素都被高亮了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1GL1MzW-1620791659909)(C:\Users\Administrator\Desktop\test\capture\捕获13.PNG)]
.highlight {
background-color: yellow;
}
<h1 class="highlight">Class selectors</h1>
<p>Veggies es bonus vobis, proinde vos postulo essum magis <span class="highlight">kohlrabi welsh onion</span> daikon amaranth tatsoi tomatillo
melon azuki bean garlic.</p>
<p class="highlight">Gumbo beet greens corn soko <strong>endive</strong> gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard
greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
你可以创建一个选择器,用类名选中具体的元素。在下面的例子中,我们会用类名 highlight 高亮一个span,区别于同样使用类名 highlight 高亮的h1。我们为每个目标元素使用一个类型选择器,加上打点好的类名,中间不要空格。

span.highlight {
background-color: yellow;
}
h1.highlight {
background-color: pink;
}
<h1 class="highlight">Class selectors</h1>
<p>Veggies es bonus vobis, proinde vos postulo essum magis <span class="highlight">kohlrabi welsh onion</span> daikon amaranth tatsoi tomatillo
melon azuki bean garlic.</p>
<p class="highlight">Gumbo beet greens corn soko <strong>endive</strong> gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard
greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
这种方式减少了CSS规则的作用范围。这条CSS规则只会应用在具体的元素和类名结合的元素上。如果你想要把这条CSS规则应用在另外的元素上的话,你可能需要增加另外一个选择器。
你可以在一个元素上绑定多个类名,你可以单独选择元素,或者所有的类名都在你的选择器中出现。
这会对你构建组件非常有帮助,组件可以让你在 项目 中多次使用。
在下面的例子中,我们会有一个包含note 信息 的盒子div。当盒子有类名 notebox的时候有灰色边框,同样的如果有 warning danger,我们就改变边框颜色。

.notebox {
border: 4px solid #666;
padding: .5em;
}
.notebox.warning {
border-color: orange;
font-weight: bold;
}
.notebox.danger {
border-color: red;
font-weight: bold;
}
<div class="notebox">
This is an informational note.
</div>
<div class="notebox warning">
This note shows a warning.
</div>
<div class="notebox danger">
This note shows danger!
</div>
<div class="danger">
This won't get styled — it also needs to have the notebox class
</div>
ID选择器用#开始,虽然而不是点号开始,但是使用的方法是一样的。虽然ID只能用一次,一个元素只能使用一个ID。它用来选择标签上有ID名的元素,你可以在ID名之前写上类型选择器,这样可以指定同时具有类型和ID选择器选中的元素。你可以在下面的例子中看看这些用法。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OeGXbH8z-1620791659915)(C:\Users\Administrator\Desktop\test\capture\捕获16.PNG)]](https://www.gofarlic.com\upload\csdn\517\138579d93db711f3f588beb1e10f74a7.png)
#one {
background-color: yellow;
}
h1#heading {
color: rebeccapurple;
}
<h1 id="heading">ID selector</h1>
<p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo
melon azuki bean garlic.</p>
<p id="one">Gumbo beet greens corn soko <strong>endive</strong> gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard
greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
注意: 在一个文档中使用相同的ID名多次,用来写不同的样式,但是千万不要这样做。这样会导致无效代码,而且会导致一些奇怪的行为在很多地方。
小贴士:在权重那章里我们知道了ID选择器具有更高的权重.会覆盖掉其他很多选择器.多数情况,会使用类名而不是ID写在一个元素上.不管怎么样,如果只有ID一种方式选择到这个元素,可能是因为你不能直接修改或者编辑的情况下,使用ID.