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

跟着 MDN 学CSS day_9:(深入掌握CSS选择器核心技能测试)

在Web开发的学习路径中CSS选择器是构建一切样式体系的基石。无论你是刚入门的新手还是有一定经验的开发者对选择器的理解深度直接决定了你能否高效、精准地控制页面元素的样式表现。MDN Web 文档提供了一套经典的技能测试选择器练习涵盖了从基础类型选择器到复杂属性选择器的五个任务。本文将带领你逐一攻克这些任务在每个知识点下提供详细的讲解和示例代码帮助你系统性地巩固CSS选择器的核心用法。任务一基础类型选择器的精准运用CSS中最基础的构建块是类型选择器它们允许你直接根据HTML标签名称来选取元素。虽然简单但它们是所有复杂选择器的根基。任务一的目的正是让你熟悉如何在不修改HTML结构的前提下单纯依靠类型选择器来改变元素的视觉呈现。1.1 将h1标题变为蓝色这里我们直接使用元素选择器h1并将其color属性设置为蓝色。h1作为页面中最顶层的标题通常需要醒目的颜色但同时又不应过度抢夺视觉焦点蓝色是一个平衡的选择。h1{color:blue;}1.2 让h2标题具备蓝色背景和白色文本这涉及到两个属性background-color控制背景色color控制前景文本色。背景和文本之间的对比度是设计中极为关键的因素蓝色底搭配白色字能产生清晰、现代且可读性强的视觉效果。h2{background-color:blue;color:white;}1.3 把位于span标签内的文本放大到200%span本身是一个无语义的行内容器往往用于包裹需要特殊样式处理的小段文字。这里将其字体大小设置为200%意味着它会基于父元素的字体尺寸进行翻倍。选择font-size属性并使用百分比值能够保持一定的缩放灵活性。span{font-size:200%;}总结通过这三个简单的样式声明你就可以在不接触HTML的情况下快速地为页面建立层次分明的标题和重点文字样式。这种直接使用标签名作为选择器的方式代码清晰且意图明确是日常开发中使用频率最高的基础技巧。任务二类选择器、ID选择器与多类组合当一个页面结构变得稍微复杂时单纯的类型选择器就难以满足精确控制的需求。此时类选择器和ID选择器开始发挥作用。任务二设计了一系列要求帮助你理解如何通过class和id进行元素定位并且特别强调了多类组合选择器的用法。2.1 为 id 属性值为 special 的元素设置黄色背景在HTML中id具有唯一性因此#special选择器能够极其精准地定位到那一个特定的h2元素。ID选择器的优先级高于类选择器因此适合用于标识页面中独一无二的模块。#special{background-color:yellow;}2.2 为所有带有 alert 类的元素添加灰色实线边框这里的.alert类选择器会匹配所有包含该类的元素无论它们是span还是其他标签。边框样式的设置可以有效地在视觉上划定元素的边界起到警示或强调的作用。.alert{border:2px solid grey;}2.3 同时属于 alert 和 stop 类的元素背景变为红色在CSS中将两个类选择器紧挨着书写且中间没有空格即.alert.stop其含义是**“同时拥有这两个类的元素”**。这要求元素在HTML中的class属性里必须同时包含这两个单词。.alert.stop{background-color:red;}2.4 同时拥有 alert 和 go 类的元素背景变为绿色这种链式类选择器的写法不关心元素的标签类型只关注它所携带的类名组合这为构建高度可复用的样式模块提供了强大的支持。例如一个基础样式类可以定义边框和内外边距而另一个状态类则可以动态地修改背景或文本颜色。.alert.go{background-color:green;}深入理解深入理解这种多类组合机制能够让你的CSS代码量显著减少。你不必为每一种状态组合都写一个全新的类而是可以像搭积木一样通过组合不同的基础类来构建丰富的界面表现。这种思路在现代CSS架构如工具类优先的框架中体现得尤为深刻。任务三伪类选择器与结构化伪类的实际应用CSS的动态伪类和结构化伪类赋予了页面与用户交互的能力以及更精细的内容排版控制力。任务三重点考察了链接伪类:link、:visited、:hover以及:first-child、:first-line和:nth-child()等结构化伪类这是通往富有交互性和良好阅读体验的关键一步。3.1 设置链接样式未访问过的链接需要显示为橙色这通过a:link选择器来实现。一旦用户点击并访问过该链接其状态变为:visited我们将其颜色变为绿色以此向用户传达已浏览过的信息。当鼠标悬停在链接上时:hover伪类生效移除下划线文本装饰提供即时的视觉反馈。a:link{color:orange;}a:visited{color:green;}a:hover{text-decoration:none;}3.2 为容器内的第一个元素设置特殊样式任务要求为容器内的第一个元素设置字体大小为150%并将其第一行文字变为红色。这里可以使用:first-child来定位而将第一行文字设为红色则需要用到::first-line伪元素它能够自动适配第一行文字的结尾位置无论容器宽度如何变化。.container *:first-child{font-size:150%;}.container *:first-child::first-line{color:red;}3.3 为表格添加条纹效果使用:nth-child(even)或:nth-child(odd)伪类可以非常优雅地选取表格的偶数行或奇数行然后为它们设置深色背景和白色前景色从而形成清晰的斑马条纹。这种条纹设计极大地提升了表格横向阅读的引导性减少视线跳跃出错的可能。tr:nth-child(even){background-color:#333;color:white;}能力边界从链接的交互状态到文本首行的精准控制再到表格的模式化样式伪类和伪元素扩展了选择器的能力边界让你能够基于元素在文档中的位置、状态甚至是文本内容的一部分来设定样式这是纯静态类选择器无法做到的。任务四相邻兄弟选择器与子元素深度控制当你需要根据元素之间的关系来施加样式时组合器就成为了不可或缺的工具。任务四集中练习了**相邻兄弟组合器**以及子元素选择器和后代选择器的区别这将教会你如何通过元素在DOM树中的位置关系来建立样式逻辑。4.1 紧跟在h2元素之后的第一个段落文字变为红色这里必须使用相邻兄弟组合器h2 p。它的意思是**“选择所有紧接在h2元素之后出现的第一个p元素”**这两个元素必须具有相同的父元素且p必须是紧接着h2的下一个兄弟。⚠️重要区别这与后续兄弟组合器h2 ~ p有着严格的区别后者会选择h2之后所有的p兄弟而只选第一个。h2 p{color:red;}4.2 针对拥有 list 类的无序列表进行样式控制需要移除其子元素的项目符号并只为其直接的子元素即一级列表项添加1像素的灰色下边框。实现要点移除子元素的项目符号为直接子元素li设置list-style-type: none;只为一级li添加下边框使用子元素组合器ul.list liul.list li{list-style-type:none;border-bottom:1px solid grey;}关键区分这段代码精确地诠释了**“子元素与后代元素”**的差异。如果你错误地使用了空格后代选择器ul.list li那么嵌套列表ul内部的li2.1/li和li2.2/li也会失去项目符号并获得边框这很可能违背了你的设计初衷。防御性CSS深入领会相邻兄弟选择器和子元素选择器能够帮助你编写出防御性更强、更不容易因HTML结构调整而失效的CSS规则。任务五属性选择器的进阶过滤技巧当元素没有明确的类名或ID或者你需要根据HTML标签自带属性的具体值来区分样式时属性选择器就展现出了它强大的威力。任务五将带你依次实践存在性选择器、包含值选择器和起始值选择器让你掌握对链接进行精细分类和样式化的一把利器。预设样式所有待处理的a元素都已预设了一个5像素宽的灰色实线边框我们的任务是根据不同的属性条件来覆盖边框颜色。5.1 选择带有 title 属性的a元素边框颜色变为粉色这里使用a[title]选择器它只关心title属性是否存在而不在乎它的值是什么。页面中任何被赋予了额外提示信息的链接都会因此获得一个粉色边框从视觉上提示用户这里存在补充说明。a[title]{border-color:pink;}5.2 选取 href 属性值中包含 contact 一词的链接边框设置为橙色这里采用a[href*contact]选择器其中的星号*表示属性值中包含该子串即可。无论是绝对路径/contact还是相对路径../contact/index.html只要字符串中出现了contact这个选择器就能捕获到。这是一种基于语义片段的模糊匹配非常适合根据URL关键字来高亮导航或特定功能区。a[href*contact]{border-color:orange;}5.3 选取 href 属性值以 https 开头的链接边框变为绿色这通过a[href^https]完成其中^符号代表起始值匹配。这能有效地区分出使用了安全超文本传输协议的外部链接并给予它们独特的绿色边框标识。相比于针对http协议的站点https的标识往往能给用户带来更多的安全信赖感。a[href^https]{border-color:green;}总结通过这五种任务中涉及的选择器练习你已经从简单的类型匹配穿越了类与ID的精准定位领略了伪类与伪元素的动态和结构化能力掌握了元素间关系的组合技法并最终触及了属性值的深度筛选。任务核心知识点选择器类型任务一基础类型选择器h1、h2、span任务二类、ID与多类组合.class、#id、.a.b任务三伪类与结构化伪类:link、:hover、:nth-child()、::first-line任务四兄弟与子元素组合器h2 p、ul li任务五属性选择器进阶[title]、[href*]、[href^]持续精进持续在不同场景下有意识地运用这些选择器你将在应对复杂页面布局和交互样式时更加游刃有余。还在纠结 CSS 样式写得杂乱无章、布局频频踩坑收藏此文持续跟进后续分享 CSS 高效简写、兼容适配方案、经典布局案例、样式避坑干货从基础样式到实战排版一站式学透快速提升前端页面编写能力

相关文章:

跟着 MDN 学CSS day_9:(深入掌握CSS选择器核心技能测试)

在Web开发的学习路径中,CSS选择器是构建一切样式体系的基石。无论你是刚入门的新手,还是有一定经验的开发者,对选择器的理解深度直接决定了你能否高效、精准地控制页面元素的样式表现。MDN Web 文档提供了一套经典的"技能测试&#xff1…...

为你的大模型应用快速接入Taotoken,Python调用只需三步

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的大模型应用快速接入Taotoken,Python调用只需三步 对于希望在自己的应用中集成大模型能力的开发者而言&#xff0…...

从零上手腾讯 Marvis:真正接管电脑的 AI,看完直接封神

作者:逆境不可逃 技术永无止境 希望我的内容可以帮助到你!!!!! 大家吼 ! 我是 逆境不可逃 今天给大家带来文章《从零上手腾讯 Marvis:真正接管电脑的 AI,看完直接封神》. Marvis 官…...

电力设备巡检数据分析Agent是怎样工作的?基于企业级Agent的非侵入式架构实战

作为一名在能源电力行业深耕超过15年的企业架构师,我见证了电力巡检从“双腿走天下”到“无人机满天飞”的跨越。然而,到了2026年,我们面临的挑战已经不再是如何获取数据,而是如何处理这些呈几何级数增长的巡检数据。很多企业投入…...

LLMUnity:大模型原生嵌入Unity的实时3D认知架构

1. 这不是“把大模型塞进Unity”,而是重新定义3D交互的起点很多人第一次听说“LLMUnity”时,下意识反应是:“哦,又一个把ChatGPT API调进Unity的Demo?”——这恰恰踩进了最典型的认知陷阱。LLMUnity不是在Unity里开个H…...

工厂MES数据自动采集怎样用AI完成?资深架构师的非侵入式集成落地指南

摘要: 我是架构师老王。在2026年工业数字化转型的深水区,工厂MES数据自动采集已不再是简单的“连线接口”,而是演变为一场关于“感知、决策与执行”的架构革命。面对老旧系统API缺失、烟囱式架构林立以及信创环境下严苛的安全合规要求&#x…...

优化缺陷密度,核心是从“事后救火”转向“全程预防”

优化缺陷密度,核心是从“事后救火”转向“全程预防”,通过系统化的流程和工具,在生产代码中构建 “计划-执行-检查-改进”的持续优化闭环。📈 第一步:测量与评估,建立基线测量缺陷密度:按质量阶…...

初创团队如何利用Taotoken统一管理多项目的AI模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken统一管理多项目的AI模型调用 对于初创团队而言,同时推进多个小项目是常态。每个项目可能都需…...

边缘多模态AI驱动的文档重构技术

1. 项目概述:当打印机和扫描仪开始“读懂”文档的真正意图你有没有遇到过这样的场景:客户用手机随手拍了一张合同,边缘歪斜、背景杂乱、光线不均,发到公司邮箱里;行政同事用老式扫描仪扫了一份带表格的报销单&#xff…...

互联网软件企业的新建软件系统的缺陷密度

为新建的互联网软件系统设定缺陷密度基线,需要区分其所在的阶段,因为“发布前”和“发布后”的标准差异巨大。同时,也要注意KLOC(千行代码)和FP(功能点)这两种常见度量单位。下面是基于最新行业…...

别再死记硬背WideDeep了!用TensorFlow 2.x手把手复现Google Play的推荐模型(附源码)

从零实现Wide&Deep推荐模型:TensorFlow 2.x实战指南 在推荐系统领域,Google提出的Wide&Deep模型架构已经成为工业界的经典范式。但大多数教程仅停留在理论讲解层面,当开发者真正动手实现时,往往会遇到特征工程适配、联合训…...

Taotoken多模型路由在单一服务故障时的体验保障

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken多模型路由在单一服务故障时的体验保障 1. 引言 在构建依赖大模型能力的应用时,服务的稳定性是开发者必须面对…...

写作压力小了!盘点2026年人气爆表的AI论文平台

一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文平台强势来袭,实测提速效果炸裂,覆盖选题构思、文献综述、降重润色、格式排版等核心场景,助你高效搞定论文,告别熬夜赶稿! 一、全流程王者:一站式搞…...

甲言Jiayan:5分钟掌握古汉语NLP终极解决方案

甲言Jiayan:5分钟掌握古汉语NLP终极解决方案 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st NLP toolkit designed for Classical C…...

【Elasticsearch从入门到精通】第15篇:Elasticsearch删除与更新API——精确操作与脚本更新

上一篇【第14篇】Elasticsearch文档检索API——GET、MGet与字段选择 下一篇【第16篇】Elasticsearch批量操作API——Bulk、Reindex与跨集群索引 摘要 数据的删除和更新是Elasticsearch文档操作中不可或缺的环节。本文全面讲解了Elasticsearch删除与更新API的使用方法&#xff…...

别再手搓流程图了!用WPF从零封装一个可拖拽、可连接的业务节点控件(附完整源码)

WPF业务流程图控件开发实战:从零构建可拖拽节点系统 在当今企业级应用开发中,可视化业务流程配置已成为提升用户体验的关键要素。无论是审批流程引擎、ETL数据处理管道,还是自动化任务编排系统,都需要直观的节点连接界面。本文将深…...

Postman登录接口响应为空?HTTP响应体未刷出的三层根因分析

1. 这不是Postman的问题,是接口通信链路上某个环节“失语”了你用Postman调后端登录接口,请求发出去了,状态码也回来了(比如200),但响应体里空空如也——没有JSON数据、没有token字段、甚至Response标签页里…...

初次使用Taotoken控制台管理账单与查看各模型消耗明细

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken控制台管理账单与查看各模型消耗明细 对于刚开始使用大模型服务的开发者或团队而言,清晰、透明地掌握…...

AI医疗落地实操指南:临床决策支持与人机协同诊疗

1. 这不是科幻片,是每天在三甲医院晨交班时发生的事 “AI把医生取代了?”——这是我过去三年被问得最多的问题,通常来自刚轮转到信息科的住院医,或是陪孩子看病时刷到短视频的家长。但真实情况比这复杂得多:上周五我蹲…...

Topit:终极免费macOS窗口置顶工具,让工作效率飙升300%

Topit:终极免费macOS窗口置顶工具,让工作效率飙升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在macOS上同时处理多个…...

告别PyTorch依赖:手把手教你用C++ CUDA实现LeNet推理,从Python模型导出到C++部署全流程

从PyTorch到C CUDA:工业级LeNet模型部署全流程实战 在深度学习模型开发中,Python生态提供了丰富的训练工具,但生产环境往往需要高性能的C实现。本文将完整演示如何将PyTorch训练的LeNet模型部署到C CUDA环境,涵盖模型导出、内存管…...

别再只盯着人脸了!手把手教你用Python复现2023年最新的多模态情绪识别模型COGMEN

别再只盯着人脸了!手把手教你用Python复现2023年最新的多模态情绪识别模型COGMEN 情绪识别技术正在经历从单一模态到多模态融合的范式转变。传统基于面部表情的分析方法往往受限于光照条件、遮挡问题以及文化差异带来的表达偏差。2023年发布的COGMEN模型通过引入图…...

如何通过 TaoToken CLI 快速安装配置多模型调用环境

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何通过 TaoToken CLI 快速安装配置多模型调用环境 对于希望快速接入多个大模型的开发者而言,逐一配置不同工具的 API…...

别让‘单电源供电’坑了你:运放参考电压旁路电容的选型与避坑全攻略

别让‘单电源供电’坑了你:运放参考电压旁路电容的选型与避坑全攻略 在单电源供电的运算放大器电路中,参考电压的稳定性往往决定了整个系统的性能。许多工程师习惯性地在Vcc/2分压点添加旁路电容,却不知这个看似合理的操作可能引发灾难性振荡…...

从开发者视角浅谈Taotoken用量看板对于日常调试与优化的辅助作用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从开发者视角浅谈Taotoken用量看板对于日常调试与优化的辅助作用 在日常开发工作中,当我们接入大模型API来构建智能功能…...

Linux驱动开发:/proc接口创建与安全实现指南

1. 项目概述:为什么我们需要关注/proc接口?在Linux驱动开发的世界里,与用户空间进行数据交换是家常便饭。你写了一个驱动,控制着某个硬件,但总得有个“窗口”让系统管理员或者上层应用能看看它运行得怎么样&#xff0c…...

Python简单算法题

1.字符串中的第一个唯一字符def first_uniq_char(s: str) -> int:from collections import Countercount Counter(s)for i, ch in enumerate(s):if count[ch] 1:return ireturn -12. 合并两个有序数组(双指针,in-place)题目:…...

Python实现“打家劫舍“的一种方法

Python实现“打家劫舍“的一种方法 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 …...

AI开始替人跑任务后,真正决定体验的不是模型,而是向量引擎

AI开始替人跑任务后,真正决定体验的不是模型,而是向量引擎为什么这篇文章值得你现在看 过去一年,很多人聊AI,张口就是哪个模型更强。 有人追Gemini 3.5 Flash。 有人追Qwen新模型。 有人追OpenAI的Responses API和Agent工具链。 也…...

IntelliJ IDEA 2023.3 集成 Maven 3.8.3 保姆级避坑指南:从环境变量到项目构建全流程

IntelliJ IDEA 2023.3 与 Maven 3.8.3 深度集成实战:从零构建企业级Java项目 作为一名长期使用IntelliJ IDEA进行Java开发的工程师,我深刻体会到Maven与IDE无缝集成的重要性。每次新版本发布,那些看似简单的配置背后往往隐藏着令人头疼的兼容…...