选择器是CSS的核心,用于精准定位HTML元素并应用样式。根据功能复杂度可分为基础选择器、复合选择器和伪类选择器。
| 选择器类型 | 语法 | 描述 | 示例 |
|---|---|---|---|
| 元素选择器 | 标签名 | 匹配指定标签的所有元素 | p { color: gray; }(匹配所有<p>标签) |
| 类选择器 | .类名 | 匹配class属性为指定值的元素 | .text-primary { color: blue; }(匹配class="text-primary"的元素) |
| ID选择器 | #ID名 | 匹配id属性为指定值的唯一元素 | #logo { width: 200px; }(匹配id="logo"的元素) |
| 通配符选择器 | * | 匹配所有元素 | * { margin: 0; padding: 0; }(重置所有元素的外边距和内边距) |
通过组合基础选择器实现更精确的匹配:
A B(匹配A元素内的所有B后代元素,包括间接子元素)ul li { list-style: none; }(匹配<ul>内所有<li>)A > B(仅匹配A元素的直接子元素B)div > p { font-weight: bold; }(仅匹配<div>的直接子元素<p>)A + B(匹配A元素后的第一个同级B元素)h1 + p { margin-top: 0; }(匹配<h1>后的第一个<p>)A, B(同时匹配A和B元素)h1, h2 { color: #333; }(匹配所有<h1>和<h2>)用于选择元素的特定状态或位置,常见伪类包括:
:hover:鼠标悬停时的元素:active:元素被点击时的状态:link/:visited:未访问/已访问的链接:nth-child(n):匹配父元素的第n个子元素案例2-2:导航栏高亮效果
<nav>
<ul class="nav-list">
<li><a href="#">首页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">关于</a></li>
</ul>
</nav>
<style>
.nav-list { list-style: none; padding: 0; }
.nav-list li { display: inline-block; margin: 0 10px; }
.nav-list a {
text-decoration: none;
padding: 8px 12px;
color: #333;
border-radius: 4px;
}
/* 鼠标悬停时高亮 */
.nav-list a:hover {
background-color: #007bff;
color: white;
transition: background-color 0.3s; /* 平滑过渡效果 */
}
</style>
注释::hover伪类在鼠标指针悬停在<a>元素上时触发样式变更,需注意:
<div>)在部分旧浏览器中可能需要设置cursor: pointer才能生效;transition属性可实现样式的平滑过渡,提升用户体验。