选择器target/selection/root的小应用

本文介绍了一种特殊的CSS选择器——target选择器及其应用案例。通过具体示例展示了如何利用target选择器来实现页面元素的状态变化,同时介绍了:root和::selection等其他结构性伪类选择器的基本用法。
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8">
<title>结构性伪类选择器—target</title>
<style type="text/css">
:root{background:orange;}/*根选择器,顾名思义相当于html,但是使用该选择器对hack很方便*/
::selection{background:red;color:#fff;}/*用于鼠标选定字改变其背景或其他属性*/
#brand:target p{background-color:blue;color:#fff;}
#apple:target p{background-color:blue;color:#fff;}
</style>
</head> 
<body>
    <div class="menuSection" id="brand">
        <h2><a href="#brand">Brand</a></h2>
        <p>content for Brand</p>
    </div>
    <div id="apple">
        <h2><a href="#apple">apple</a></h2>
        <p>content for apple</p>
    </div>
</body>
</html>
<think>我们之前讨论过`#count`这个ID选择器,现在用户希望了解CSS选择器的完整分类。根据引用[1]和引用[2],我们可以将CSS选择器分为以下几类: 注意:回答需要严格遵循系统级指令,特别是数学公式和引用标注的要求。但当前问题不涉及数学公式,因此重点在引用标注和清晰分类。 根据引用[1]的目录结构,结合引用[2]的说明,CSS选择器主要分为: 1. 常用基础选择器 2. 群组选择器 3. 关系选择器(又称组合选择器) 4. 属性选择器 5. 伪类/伪元素选择器 此外,我们还可以补充一些引用中未明确提及但常见的选择器类型(如伪类选择器的子类)。 由于用户的问题比较开放,我们尽可能全面地列举,但也要注意避免过于冗长。因此,我们将按照分类列举并简要说明,每个分类给出1-2个例子。 注意:在每个分类的末尾,如果引用了资料,需要标注引用标识[^1]或[^2](根据引用内容来源)。 另外,按照要求,最后需要生成相关问题。 </think>### CSS 选择器分类详解 根据引用[1][^1]和引用[2][^2],CSS 选择器可分为以下 7 大类: --- #### 一、基础选择器 1. **元素选择器** ```css p { color: blue; } /* 选择所有<p>元素 */ ``` 2. **类选择器** ```css .warning { background: yellow; } /* 选择 class="warning" 的元素 */ ``` 3. **ID 选择器** ```css #header { height: 80px; } /* 选择 id="header" 的元素 */ ``` 4. **通配符选择器** ```css * { margin: 0; } /* 选择所有元素 */ ``` --- #### 二、组合选择器 5. **群组选择器** ```css h1, h2, .title { font-weight: bold; } /* 同时选择多类元素 */ ``` --- #### 三、关系选择器(组合器) 6. **后代选择器** ```css div p { color: red; } /* 选择 div 内所有后代 <p> */ ``` 7. **子代选择器** (`>`) ```css ul > li { list-style: none; } /* 仅选择 ul 的直接子元素 <li> */ ``` 8. **相邻兄弟选择器** (`+`) ```css h2 + p { margin-top: 0; } /* 选择紧跟在 h2 后的第一个 <p> */ ``` 9. **通用兄弟选择器** (`~`) ```css h2 ~ p { color: grey; } /* 选择 h2 之后所有同层级 <p> */ ``` --- #### 四、属性选择器 ```css a[target="_blank"] { /* 选择含特定属性的元素 */ border: 1px dashed; } ``` - `[attr]`:存在属性 - `[attr=val]`:精确匹配值 - `[attr^=val]`:以值开头 - `[attr$=val]`:以值结尾 - `[attr*=val]`:包含值 --- #### 五、伪类选择器 基于元素状态的选择: ```css a:hover { color: purple; } /* 鼠标悬停 */ li:nth-child(2n) { background: #eee; } /* 偶数行 */ input:focus { border-color: blue; } /* 输入框聚焦 */ :root { --main-color: #06c; } /* 根元素选择 */ ``` --- #### 六、伪元素选择器 创建虚拟元素进行样式控制: ```css p::first-letter { font-size: 2em; } /* 首字母放大 */ p::after { content: "→"; } /* 在元素后插入内容 */ ::selection { background: yellow; } /* 文本选中状态 */ ``` --- #### 七、特殊选择器 11. **否定伪类** (`:not()`) ```css div:not(.hidden) { display: block; } /* 排除特定类的元素 */ ``` --- ### 选择器优先级计算 优先级权重公式: $$ \text{优先级} = \overbrace{1000}^{\text{!important}} + \overbrace{100\times a}^{\text{ID}} + \overbrace{10\times b}^{\text{类/伪类/属性}} + \overbrace{1\times c}^{\text{元素/伪元素}} $$ 示例:`#nav .item:hover` = $100(\text{ID}) + 10(\text{类}) + 10(\text{伪类}) = 120$[^1] --- ### 相关问题 1. 如何通过组合选择器精确选择表格中的奇数列? 2. 伪类选择器 `:nth-child()` 和 `:nth-of-type()` 有何区别? 3. 为什么实践中应避免过度使用 ID 选择器?(参考优先级公式) 4. 如何用属性选择器匹配包含多个空格分隔值的属性? 5. 在响应式设计中,媒体查询如何与选择器协同工作?(参考引用[1][^1])
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值