当前位置: 首页 > article >正文

CSS选择器高级用法:精准控制样式

CSS选择器高级用法精准控制样式引言CSS选择器是CSS的核心组成部分它决定了哪些元素会应用特定的样式规则。掌握CSS选择器的高级用法可以让你更加精准地控制页面元素的样式提高代码的可读性和可维护性。本文将深入探讨CSS选择器的高级用法帮助你成为CSS选择器的专家。基本选择器回顾在深入高级选择器之前让我们先回顾一下基本的CSS选择器元素选择器p { color: red; }类选择器.class { color: red; }ID选择器#id { color: red; }通配符选择器* { margin: 0; padding: 0; }组合选择器后代选择器选择某个元素的所有后代元素/* 选择div内的所有p元素 */ div p { color: blue; }子选择器选择某个元素的直接子元素/* 选择div的直接子元素p */ div p { color: blue; }相邻兄弟选择器选择紧接在某个元素后的兄弟元素/* 选择p元素后的第一个div元素 */ p div { margin-top: 20px; }通用兄弟选择器选择某个元素后的所有兄弟元素/* 选择p元素后的所有div元素 */ p ~ div { margin-top: 10px; }伪类选择器状态伪类链接状态/* 未访问的链接 */ a:link { color: blue; } /* 已访问的链接 */ a:visited { color: purple; } /* 鼠标悬停时 */ a:hover { color: red; } /* 激活状态 */ a:active { color: green; }表单状态/* 获得焦点的输入框 */ input:focus { border-color: blue; outline: none; } /* 禁用的输入框 */ input:disabled { background-color: #f5f5f5; cursor: not-allowed; } /* 选中的复选框 */ input:checked { /* 样式 */ }结构伪类位置伪类/* 选择第一个子元素 */ ul li:first-child { font-weight: bold; } /* 选择最后一个子元素 */ ul li:last-child { color: red; } /* 选择第n个子元素 */ ul li:nth-child(2) { background-color: yellow; } /* 选择偶数位置的子元素 */ ul li:nth-child(even) { background-color: #f0f0f0; } /* 选择奇数位置的子元素 */ ul li:nth-child(odd) { background-color: #e0e0e0; } /* 选择前3个子元素 */ ul li:nth-child(-n3) { color: blue; }类型伪类/* 选择第一个某种类型的子元素 */ div p:first-of-type { font-size: 18px; } /* 选择最后一个某种类型的子元素 */ div p:last-of-type { font-style: italic; } /* 选择第n个某种类型的子元素 */ div p:nth-of-type(2) { color: green; }空元素和唯一子元素/* 选择没有子元素的元素 */ div:empty { display: none; } /* 选择是其父元素唯一子元素的元素 */ p:only-child { color: red; } /* 选择是其父元素唯一某种类型子元素的元素 */ p:only-of-type { font-weight: bold; }否定伪类/* 选择不是p元素的所有元素 */ :not(p) { margin: 0; } /* 选择没有class为special的p元素 */ p:not(.special) { color: gray; } /* 选择不是第一个子元素的li元素 */ ul li:not(:first-child) { margin-top: 10px; }伪元素选择器常用伪元素/* 在元素内容前插入内容 */ p::before { content: → ; color: red; } /* 在元素内容后插入内容 */ p::after { content: ←; color: blue; } /* 选择元素的第一个字母 */ p::first-letter { font-size: 2em; font-weight: bold; color: red; } /* 选择元素的第一行 */ p::first-line { font-weight: bold; color: blue; } /* 选择用户选择的文本 */ ::selection { background-color: yellow; color: black; }属性选择器基本属性选择器/* 选择具有某个属性的元素 */ [title] { color: red; } /* 选择属性值等于某个值的元素 */ [titleexample] { color: blue; } /* 选择属性值包含某个值的元素 */ [title*example] { color: green; } /* 选择属性值以某个值开头的元素 */ [title^ex] { color: purple; } /* 选择属性值以某个值结尾的元素 */ [title$ple] { color: orange; } /* 选择属性值包含某个完整单词的元素 */ [title~example] { color: pink; } /* 选择属性值以某个值开头且后面跟连字符的元素 */ [lang|en] { color: brown; }表单属性选择器/* 选择类型为文本的输入框 */ input[typetext] { width: 200px; } /* 选择类型为密码的输入框 */ input[typepassword] { width: 200px; } /* 选择类型为提交的按钮 */ input[typesubmit] { background-color: blue; color: white; }高级选择器组合复杂选择器组合/* 选择class为container的div内的第2个p元素 */ div.container p:nth-child(2) { color: red; } /* 选择class为nav的ul内的所有li元素且这些li元素不是最后一个子元素 */ ul.nav li:not(:last-child) { margin-right: 20px; } /* 选择具有data-role属性且值为button的元素当鼠标悬停时 */ [data-rolebutton]:hover { background-color: #f0f0f0; } /* 选择表单中被禁用的输入框且是只读的 */ input:disabled:read-only { background-color: #e0e0e0; }选择器优先级CSS选择器的优先级从高到低内联样式stylecolor: red;ID选择器#id类选择器、伪类选择器、属性选择器.class,:hover,[attr]元素选择器、伪元素选择器div,::before计算优先级的方法内联样式1000ID选择器100类选择器、伪类选择器、属性选择器10元素选择器、伪元素选择器1/* 优先级100 10 1 111 */ #container .item p { color: red; } /* 优先级10 10 1 21 */ .container .item p { color: blue; } /* 优先级100 1 101 */ #container p { color: green; }实际项目中的应用导航栏样式/* 导航栏基本样式 */ .nav { display: flex; list-style: none; padding: 0; margin: 0; } /* 导航项样式 */ .nav li { position: relative; margin-right: 20px; } /* 导航链接样式 */ .nav li a { display: block; padding: 10px 15px; color: #333; text-decoration: none; transition: all 0.3s ease; } /* 导航链接悬停效果 */ .nav li a:hover { color: #007bff; } /* 下拉菜单样式 */ .nav li ul { position: absolute; top: 100%; left: 0; background: white; list-style: none; padding: 0; margin: 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1); opacity: 0; visibility: hidden; transition: all 0.3s ease; } /* 下拉菜单项样式 */ .nav li ul li { width: 200px; } /* 下拉菜单链接样式 */ .nav li ul li a { display: block; padding: 10px 15px; color: #333; text-decoration: none; transition: all 0.3s ease; } /* 下拉菜单链接悬停效果 */ .nav li ul li a:hover { background-color: #f0f0f0; color: #007bff; } /* 鼠标悬停在导航项上时显示下拉菜单 */ .nav li:hover ul { opacity: 1; visibility: visible; } /* 最后一个导航项没有右边距 */ .nav li:last-child { margin-right: 0; }表单样式/* 表单容器 */ .form-container { max-width: 600px; margin: 0 auto; padding: 20px; } /* 表单组 */ .form-group { margin-bottom: 20px; } /* 标签样式 */ .form-group label { display: block; margin-bottom: 5px; font-weight: bold; color: #333; } /* 输入框样式 */ .form-group input[typetext], .form-group input[typeemail], .form-group input[typepassword], .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; transition: all 0.3s ease; } /* 输入框获得焦点时的样式 */ .form-group input[typetext]:focus, .form-group input[typeemail]:focus, .form-group input[typepassword]:focus, .form-group textarea:focus { outline: none; border-color: #007bff; box-shadow: 0 0 0 3px rgba(0,123,255,0.1); } /* 复选框和单选按钮 */ .form-group input[typecheckbox], .form-group input[typeradio] { margin-right: 5px; } /* 提交按钮 */ .form-group input[typesubmit] { background-color: #007bff; color: white; border: none; padding: 10px 20px; border-radius: 4px; font-size: 16px; cursor: pointer; transition: all 0.3s ease; } /* 提交按钮悬停效果 */ .form-group input[typesubmit]:hover { background-color: #0056b3; } /* 禁用的表单元素 */ .form-group input:disabled, .form-group textarea:disabled { background-color: #f5f5f5; cursor: not-allowed; } /* 必填字段标记 */ .form-group label::after { content: *; color: red; } /* 没有required属性的标签不显示星号 */ .form-group label:not(:has( input[required]))::after { content: ; }性能优化避免使用通配符选择器通配符选择器会匹配所有元素影响性能避免使用过度复杂的选择器复杂选择器会增加浏览器的计算负担使用类选择器代替元素选择器类选择器的优先级更高计算更快避免使用后代选择器后代选择器会遍历所有后代元素影响性能合理使用ID选择器ID选择器优先级最高但过度使用会导致样式难以维护总结CSS选择器是CSS的核心掌握高级选择器的使用方法可以让你更加精准地控制页面元素的样式提高代码的可读性和可维护性。通过本文的学习你应该掌握了组合选择器的使用后代选择器、子选择器、兄弟选择器伪类选择器的使用状态伪类、结构伪类、否定伪类伪元素选择器的使用::before、::after、::first-letter等属性选择器的使用基本属性选择器、表单属性选择器高级选择器组合复杂选择器的组合使用选择器优先级如何计算和理解选择器的优先级实际项目中的应用导航栏样式、表单样式等性能优化如何优化选择器的性能在实际开发中我们应该根据具体需求选择合适的选择器平衡代码的可读性、可维护性和性能。通过不断学习和实践你将能够掌握CSS选择器的精髓为你的项目创造出更加出色的样式效果。

相关文章:

CSS选择器高级用法:精准控制样式

CSS选择器高级用法:精准控制样式 引言 CSS选择器是CSS的核心组成部分,它决定了哪些元素会应用特定的样式规则。掌握CSS选择器的高级用法,可以让你更加精准地控制页面元素的样式,提高代码的可读性和可维护性。本文将深入探讨CSS选择…...

嵌入式固件烧录总失败?VSCode 2026新插件已上线,自动识别芯片ID、修复Flash校验偏移、智能重试机制全解析

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026嵌入式烧录插件发布背景与核心价值 随着 RISC-V 生态爆发式增长与多核异构 MCU(如 NXP i.MX RT117x、ESP32-H2、GD32V 系列)在工业物联网与边缘 AI 场景的深度落地&a…...

PyQt5开发避坑指南:QComboBox动态修改数据时,这些细节千万别忽略

PyQt5开发避坑指南:QComboBox动态数据处理的7个关键细节 在桌面应用开发中,QComboBox作为最常用的下拉选择控件之一,看似简单却暗藏玄机。许多开发者在使用过程中都曾遇到过这样的场景:明明代码逻辑清晰,却在动态修改数…...

揭秘输出反灌电流ZVS反激:低成本实现软开关的工程实践

1. 低成本ZVS反激变换器的核心优势 我第一次接触这种利用输出反灌电流实现ZVS的反激变换器时,最惊讶的就是它的电路结构竟然如此简单。相比常见的有源箝位方案,它省去了额外的开关管和驱动电路,整个拓扑看起来就像普通反激变换器加了个同步整…...

LizzieYzy:围棋AI分析的终极免费工具,快速提升棋力的完整指南

LizzieYzy:围棋AI分析的终极免费工具,快速提升棋力的完整指南 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy LizzieYzy是一款基于Lizzie改进的围棋AI分析界面,支…...

机器学习实验系统化管理:提升效率与复现性

1. 为什么机器学习实验需要系统化管理 我清楚地记得第一次被机器学习实验折磨到崩溃的场景。那是一个周五的晚上,我启动了20个不同的模型训练任务,满心期待周一能看到突破性的结果。然而周一打开笔记本时,却发现根本分不清哪个实验对应哪个配…...

2026年主流服装POS系统哪家强?功能、场景、适用规模全维度横评

服装行业选POS系统,最怕的就是“买之前看功能列表都差不多,买回来发现根本用不起来”。市面上打着“服装专用”旗号的POS系统不少,但真正深入到颜色尺码管理、多店数据联动、移动收银这些服装行业的真实痛点上,差异远比想象中大得…...

5步解锁SillyTavern:从AI对话新手到角色扮演大师

5步解锁SillyTavern:从AI对话新手到角色扮演大师 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否厌倦了千篇一律的AI对话体验?是否渴望创造有血有肉的虚拟角色…...

网络安全SRC漏洞挖掘学习路线 - (五):漏洞报告编写与变现,打通挖洞全闭环

网络安全SRC漏洞挖掘学习路线 - 第五期:漏洞报告编写与变现,打通挖洞全闭环 摘要:承接第四期常见漏洞挖掘实操,本期作为SRC漏洞挖掘的“收尾闭环期”,也是新手实现“技术变现”的关键一期。重点拆解SRC漏洞报告的编写…...

Arm SVE2指令集STNT1W指令解析与应用优化

1. Arm SVE2指令集与STNT1W指令概述在现代处理器架构中,SIMD(单指令多数据)技术通过并行数据操作显著提升了计算效率。Arm SVE2(Scalable Vector Extension 2)作为第二代可扩展向量指令集,引入了多项创新特…...

如何彻底解决显卡驱动问题?Display Driver Uninstaller 终极使用指南

如何彻底解决显卡驱动问题?Display Driver Uninstaller 终极使用指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-driver…...

网络安全SRC漏洞挖掘学习路线 - (四):常见漏洞挖掘实操,实现首次挖洞突破

网络安全SRC漏洞挖掘学习路线 - 第四期:常见漏洞挖掘实操,实现首次挖洞突破 摘要:承接第三期信息收集实战,本期作为SRC漏洞挖掘的“核心突破期”,聚焦新手最易上手、最高发的4类SRC漏洞——弱口令、SQL注入、XSS跨站脚…...

ARM SME架构MOVA指令详解与优化实践

1. ARM SME架构中的MOVA指令概述在ARMv9架构引入的SME(Scalable Matrix Extension)扩展中,MOVA指令扮演着矩阵加速器(ZA)与向量寄存器之间数据搬运的关键角色。作为SIMD编程的核心指令之一,MOVA实现了ZA tile切片与SVE向量寄存器之…...

解锁数字记忆:用m4s-converter为B站缓存视频赋予新生

解锁数字记忆:用m4s-converter为B站缓存视频赋予新生 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容如潮水般涌动的时代&…...

KoboldAI完整指南:免费搭建本地AI写作助手

KoboldAI完整指南:免费搭建本地AI写作助手 【免费下载链接】KoboldAI-Client For GGUF support, see KoboldCPP: https://github.com/LostRuins/koboldcpp 项目地址: https://gitcode.com/gh_mirrors/ko/KoboldAI-Client 想要一个完全免费、本地运行的AI写作…...

2025年QQ音乐解析终极指南:3种方法轻松获取高品质音乐

2025年QQ音乐解析终极指南:3种方法轻松获取高品质音乐 【免费下载链接】MCQTSS_QQMusic QQ音乐解析 项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic 还在为无法下载QQ音乐上的心爱歌曲而烦恼吗?想要随时随地畅听高品质音乐却受限于…...

高效M3U8视频下载方案:解锁图形界面工具的专业用法

高效M3U8视频下载方案:解锁图形界面工具的专业用法 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在当今数字时代,M3U8视频下载已成为许多用户获取在线教…...

突破性技术解析:Anime4K如何实现浏览器端实时动漫超分

突破性技术解析:Anime4K如何实现浏览器端实时动漫超分 【免费下载链接】Anime4K A High-Quality Real Time Upscaler for Anime Video 项目地址: https://gitcode.com/gh_mirrors/an/Anime4K Anime4K是一套开源的高质量实时动漫视频超分辨率与降噪算法&#…...

Rust的#[repr(packed)]数据密集

Rust的#[repr(packed)]数据密集:内存优化的利器 在系统编程领域,内存布局的精细控制往往是性能优化的关键。Rust作为一门注重安全与效率的语言,提供了#[repr(packed)]这一强大属性,允许开发者彻底消除结构体的内存对齐填充&#…...

macOS安装Ngnix/1.29.8

一、安装 Homebrew(如已安装可跳过) 打开终端(Terminal),执行以下命令安装 Homebrew(Mac 上最常用的包管理工具): /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.…...

011、PCIE地址空间:内存、IO与配置

PCIE地址空间:内存、IO与配置 最近帮同事排查一个PCIE设备异常的问题,现象很典型:系统能识别到设备,但驱动一读写寄存器就报错。用lspci看了一眼,BAR空间分配正常,但访问时总是产生Completion Abort。最后…...

告别反射!用xLua在Unity里优雅地让C#和Lua互传数据(附完整代码示例)

告别反射!用xLua在Unity里优雅地让C#和Lua互传数据 在Unity游戏开发中,脚本语言的灵活性与原生代码的性能往往需要权衡。传统反射调用虽然能实现C#与Lua的交互,但性能开销大、代码维护困难。xLua作为腾讯开源的跨语言解决方案,通过…...

10个Illustrator自动化脚本:彻底改变你的设计工作流

10个Illustrator自动化脚本:彻底改变你的设计工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否厌倦了在Adobe Illustrator中重复执行那些枯燥乏味的设计任务…...

DataV数据可视化组件库:专业级大屏开发架构设计与性能优化方案

DataV数据可视化组件库:专业级大屏开发架构设计与性能优化方案 【免费下载链接】DataV 项目地址: https://gitcode.com/gh_mirrors/datav/DataV DataV作为基于Vue技术栈的专业级数据可视化组件库,专为技术决策者和中级开发者提供企业级大屏解决方…...

iOS界面调试利器Peekaboo:实时透视视图层级与布局

1. 项目概述:一个iOS开发者的“透视”利器如果你是一名iOS开发者,尤其是对应用性能、界面调试或者逆向工程感兴趣,那么你很可能在某个深夜,为了解决一个诡异的UI层级问题而抓耳挠腮。传统的调试工具,比如Xcode的视图调…...

别再死磕理论了!用PCL和KinectFusion从零搭建一个三维重建Demo(附完整代码)

用PCL和KinectFusion快速实现三维重建:从代码到可视化实战 在计算机视觉领域,三维重建技术正以前所未有的速度改变着我们与数字世界的交互方式。想象一下,仅凭一台普通深度相机,就能将物理世界中的物体实时转化为可编辑的三维模型…...

手撕代码1——力扣1

两数之和 https://leetcode.cn/problems/two-sum/description/ 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且…...

2026 年最佳 SEO 网站构建器推荐:各类型平台优劣势大揭秘!

2026 年最佳 SEO 网站构建器推荐你精心设计网站并填充优质内容,却可能因网站构建器问题,导致没有流量和排名,努力付诸东流。若网站构建器阻碍网站在搜索结果中展示,就会错失曝光机会和收益。并非所有网站构建器都有相同水平的搜索…...

智能基线校正终极指南:如何用airPLS算法解决光谱分析中的基线漂移问题

智能基线校正终极指南:如何用airPLS算法解决光谱分析中的基线漂移问题 【免费下载链接】airPLS baseline correction using adaptive iteratively reweighted Penalized Least Squares 项目地址: https://gitcode.com/gh_mirrors/ai/airPLS 在光谱分析、色谱…...

不开端口,不配 DNS,用树莓派在家搭一个公网可访问的 Web 服务

原文:Cloudflare Argo Tunnel with RustRaspberry Pi,作者 Steven Pack 家里有一块吃灰的树莓派,一直想用来跑点什么,但总绕不开两个问题:家庭宽带没有固定 IP,路由器也不想随便开放端口。 这篇文章记录的…...