CSS伪类选择器

博客介绍了CSS结构伪类选择器,它依据文档结构选择元素,常用于根据父级选择器里的子元素。详细讲解了E:first-child、li:nth-child(odd)、li:nth-child(even)、E:first-of-type等选择器,还说明了nth-child和nth-of-type的编号规则差异。

结构伪类选择器通常根据文档结构来选择,常用于根据父级选择器里的子元素。

E元素是一个子元素,有父元素

1、E:first-child  选择作为第一个子元素的E元素

        li:nth-child(odd):排在奇数的li

        li:nth-child(even):排在偶数的li

2、E:first-of-type  选择所有子元素中的第一个E元素

<ul>
    <li>我是第1个</li>
    <li>我是第2个</li>
    <li>我是第3个</li>
    <li>我是第4个</li>
    <li>我是第5个</li>
    <li>我是第6个</li>
    <li>我是第7个</li>
    <li>我是第8个</li>
</ul>

<section>
    <p>1</p>
    <div>一</div>
    <div>二</div>
</section>
<style>
        ul li:first-child {
            background-color: pink;
        }
</style>

nth-child会把所有的盒子都排列序号 执行时候首先看:nth-chlid(1),之后会去看前面的div,两者不匹配故选不出来

:nth-of-type会把指定的盒子排列序号 
child是基于父元素编号,type是基于当前元素编号

<style>
        section div:nth-child(1) {
            background-color: red;
        }
        
        section div:nth-of-type(1) {
            background-color: pink;
        }
</style>

<think>我们正在讨论CSS伪类选择器。根据用户的要求,我们需要参考之前提供的引用内容,并围绕伪类选择器进行详细介绍。同时,按照系统指令,需要使用正确的LaTeX格式(虽然这个主题可能很少用到数学公式,但如果有的话要遵守格式),使用中文,并在末尾生成相关问题。 根据引用内容,我们可以总结以下几点: 1. 伪类选择器以冒号(:)开头,用于选择元素的特定状态或特定位置(引用[3])。 2. 伪类选择器可以分为几类:用户交互状态(如:hover, :active, :focus)、文档树中的位置(如:first-child, :nth-child())、表单控件状态(如:checked, :disabled)等(引用[1][4][5])。 3. 伪类选择器可以组合使用,实现更复杂的效果(引用[1]示例四)。 4. 伪类选择器能够增强页面的动态性和交互性(引用[2])。 回答结构: 1. 定义与基本语法 2. 常见伪类选择器分类及示例 3. 组合使用与高级用法 4. 使用技巧 注意:引用标记要自然地添加在相关内容的末尾。 考虑到引用[4]还提到了一些新的伪类选择器(如:not, :where, :is等),我们也要涵盖这些内容。 下面开始组织回答: </think>### CSS 伪类选择器详解 伪类选择器CSS 中用于选择元素特定状态或位置的核心工具,以单冒号 `:` 为标识符[^3]。它们不基于 HTML 结构,而是基于用户交互、文档位置或元素状态动态应用样式,显著增强页面交互性[^2]。 --- #### 一、基本语法与分类 ```css 选择器:伪类 { 样式声明 } ``` - **冒号前**:限定作用范围(可省略表示全局应用) - **冒号后**:伪类名称(不可加空格)[^3] **主要分类**: | **类型** | **代表选择器** | **作用** | |------------------------|------------------------|----------------------------| | 用户交互状态 | `:hover`, `:active` | 响应用户鼠标/键盘操作 | | 文档结构位置 | `:nth-child()`, `:first-of-type` | 基于元素在 DOM 树中的位置 | | 表单控件状态 | `:checked`, `:disabled` | 捕获表单元素的特殊状态 | | 逻辑组合 | `:not()`, `:is()` | 实现条件过滤或分组选择 | --- #### 二、常用伪类详解与示例 1. **用户交互状态** ```css /* 鼠标悬停 */ button:hover { background: #f0f0f0; } /* 激活状态(如点击时) */ a:active { transform: scale(0.95); } /* 输入框聚焦 */ input:focus { border-color: #4d90fe; } [^2][^4] ``` 2. **文档结构位置** ```css /* 奇数行条纹效果 */ tr:nth-child(odd) { background: #f9f9f9; } /* 首个段落特殊样式 */ article p:first-of-type { font-size: 1.2em; } /* 最后一个列表项 */ ul > li:last-child { border-bottom: none; } [^5] ``` 3. **表单控件状态** ```css /* 选中复选框的标签 */ input[type="checkbox"]:checked + label { font-weight: bold; } /* 禁用按钮样式 */ button:disabled { opacity: 0.5; cursor: not-allowed; } /* 只读输入框 */ input:read-only { background: #eee; } [^4] ``` --- #### 三、高级组合技巧 1. **逻辑组合器** ```css /* 排除已禁用按钮 */ button:not(:disabled) { cursor: pointer; } /* 同时匹配 h2/h3 标题 */ :is(h2, h3).title { color: #2c3e50; } [^4] ``` 2. **链式组合** ```css /* 表格首行首个单元格 */ tr:first-child td:first-child { border-radius: 4px 0 0 0; } /* 表单无效输入警告 */ input:focus:invalid { border-color: #e74c3c; } ``` 3. **动态锚点定位** ```css /* 定位到锚点时高亮章节 */ section:target { animation: highlight 1s ease; border-left: 3px solid #3498db; } [^4] ``` --- #### 四、实战技巧与性能优化 1. **移动优先设计** ```css /* 移动端隐藏复杂悬停效果 */ @media (hover: none) { .card:hover { transform: none; } } ``` 2. **性能优化原则** - 避免深层嵌套:如 `ul li:nth-child(3) a:hover` - 优先使用类选择器组合伪类(如 `.active:hover` 而非 `li:first-child:hover`) 3. **表单增强案例** ```css /* 自定义复选框 */ input[type="checkbox"]:checked::before { content: "✓"; color: green; } ``` --- ### 相关问题 1. 如何用 `:nth-child()` 实现复杂表格隔行变色效果? 2. `:focus-within` 伪类在表单布局中有哪些创新应用? 3. 为什么某些伪类(如 `:hover`)在移动端需要特殊处理? 4. 如何用 `:not()` 伪类简化大型项目的样式重置? 5. CSS4 新增的 `:has()` 父选择器将带来哪些革命性变化?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值