Learn X in Y minutes 之 CSS 语法全解:选择器、级联规则与媒体查询实战指南 文档教程【免费下载链接】learnxinyminutes-docsCode documentation written as code! How novel and totally my idea!项目地址https://gitcode.com/gh_mirrors/le/learnxinyminutes-docs点击查看免费下载CSSCascading Style Sheets级联样式表是与 HTML 配套的独立样式语言负责定义网页的外观HTML 决定页面有什么内容CSS 决定这些内容长什么样。本文以本仓库西班牙语版教程 es/css.md 为骨架、英文原版 css.md 为补充系统讲解 CSS 2 基础语法及其被 CSS 3 扩展的核心特性——从选择器、属性与单位到级联优先级、媒体查询与响应式布局读完即可独立编写可运行、可维护的样式表。CSS 的核心模型规则、选择器与属性CSS 代码由静态的**规则rules**构成。一条规则由三部分组成选择器selector用来指向页面上的一个或多个元素属性property需要设置的视觉特征如颜色、宽度、字体值value该属性被赋予的具体取值。selector { property: value; /* 更多属性... */ }浏览器将选择器命中的元素全部应用这些属性。这一选择目标 → 赋予视觉值的过程是理解 CSS 一切语法的起点。注释与基础语法CSS 只有一种注释风格/* ... */块注释没有单行注释。/* 注释写在斜杠-星号之间就像这一行 注意CSS 没有单行注释这是唯一的注释形式 */编写时建议像本仓库教程那样用注释为代码分区如## SELECTORS、## PROPERTIES让样式表具备自文档化能力——这与本仓库代码即文档见 README.md的整体理念一脉相承。选择器详解精准定位页面元素以如下示例元素为例演示各类选择器的用法div classclass1 class2 idanID attrvalue otherAttren-us foo bar /类、元素名与 ID 选择器.class1 { } /* 通过 CSS 类命中 */ .class1.class2 { } /* 同时拥有两个类中间无空格 */ div { } /* 通过元素名命中 */ #anID { } /* 通过 id 命中 */属性选择器CSS 3 大幅扩展[attr] { font-size: smaller; } /* 元素拥有该属性即可 */ [attrvalue] { font-size: smaller; } /* 属性值精确匹配 */ [attr^val] { font-size: smaller; } /* 属性值以 val 开头CSS 3 */ [attr$ue] { font-size: smaller; } /* 属性值以 ue 结尾CSS 3 */ [attr*foo] { } /* 属性值包含 foo 子串CSS 3 */ [otherAttr~foo] { } /* 空格分隔的列表中含 foo */ [otherAttr~bar] { } /* 空格分隔的列表中含 bar */ [otherAttr|en] { font-size: smaller; } /* 连字符-U002D分隔的列表以 en 开头 */~适合匹配class这类空格分隔的属性|适合匹配langen-us这类带语言子标签的属性。组合选择器缩小命中范围组合多个选择器时中间不能有空格空格本身是一种组合符含义完全不同div.some-class[attr$ue] { } /* 元素名 类 属性三条件同时满足 */层级关系子元素与后代元素div.some-parent .class-name { } /* 直接子元素仅向下树一层 */ div.some-parent .class-name { } /* 任意层级后代元素 */⚠️ 去掉空格含义完全不同div.some-parent.class-name { }表示同时具有这两个类的 div而不是后代选择。这是初学者最容易踩的坑。兄弟关系相邻兄弟与通用兄弟.i-am-just-before .this-element { } /* 紧邻的下一个兄弟元素 */ .i-am-any-element-before ~ .this-element { } /* 前面任意位置的兄弟元素 */伪类Pseudo-classes按状态选择伪类用于只在元素处于特定状态时命中它selector:link { } /* 链接尚未被访问 */ selector:visited { } /* 链接已被访问 */ selector:focus { } /* 元素获得焦点 */ selector:hover { } /* 鼠标悬停在元素上 */ selector:active { } /* 链接被点击的瞬间 */链接相关的伪类必须按link → visited → focus → hover → active的顺序书写否则样式可能不生效。此外还有结构化伪类selector:first-child { } /* 父元素的第一个子元素 */ selector:last-child { } /* 父元素的最后一个子元素 */ selector:nth-child(n) { } /* 父元素的第 n 个子元素CSS 3 */ div:not([id]) { background-color: red; } /* 反向选择没有 id 属性的 divCSS 3 */伪元素Pseudo-elements给元素虚拟部分上样式selector::before { } /* 选中元素的一个虚拟首子元素 */ selector::after { } /* 选中元素的一个虚拟末子元素 */常用于插入装饰内容、图标或清除浮动。通配符与选择器分组* { } /* 页面所有元素 */ .parent * { } /* .parent 的所有后代 */ .parent * { } /* .parent 的所有直接子元素 */ selector1, selector2 { } /* 分组逗号连接规则同时作用于所有选择器 */属性与取值单位、颜色、边框、背景与字体长度单位相对单位与绝对单位相对单位随参照物缩放适合响应式设计width: 50%; /* 父元素宽度的百分比 */ font-size: 2em; /* 元素自身原始 font-size 的倍数 */ font-size: 2rem; /* 根元素 font-size 的倍数 */ font-size: 2vw; /* 视口宽度的 1% 的倍数CSS 3 */ font-size: 2vh; /* 视口高度的 1% 的倍数 */ font-size: 2vmin; /* vh 与 vw 中较小者 */ font-size: 2vmax; /* vh 与 vw 中较大者 */绝对单位适合印刷或固定尺寸场景width: 200px; /* 像素 */ font-size: 20pt; /* 点 */ width: 5cm; /* 厘米 */ min-width: 50mm; /* 毫米 */ max-width: 5in; /* 英寸 */颜色六种写法color: #F6E; /* 短十六进制格式 */ color: #FF66EE; /* 长十六进制格式 */ color: tomato; /* 命名颜色 */ color: rgb(255, 255, 255); /* RGB 数值 */ color: rgb(10%, 20%, 50%); /* RGB 百分比 */ color: rgba(255, 0, 0, 0.3); /* RGBA含透明度0 a 1CSS 3 */ color: transparent; /* 等价于 alpha 为 0 */ color: hsl(0, 100%, 50%); /* HSL 色相-饱和度-明度CSS 3 */ color: hsla(0, 100%, 50%, 0.3); /* HSLA含透明度 */边框border-width: 5px; border-style: solid; border-color: red; /* 设置方式与 background-color 类似 */ border: 5px solid red; /* 简写一行等价于上面三行 */ border-radius: 20px; /* 圆角CSS 3 属性 */背景图片与字体background-image: url(/img-path/img.jpg); /* url() 内的引号可省略 */ font-family: Arial; /* 单名单词无需引号 */ font-family: Courier New; /* 含空格的字体族名必须加引号 */ font-family: Courier New, Trebuchet, Arial, sans-serif; /* 依次回退 */字体回退机制浏览器找不到第一个字体时使用下一个依此类推最后通常以通用字体族如sans-serif兜底。CSS 3 现代特性变量、计算、嵌套与弹性布局以下特性来自英文原版 css.md 的补充均以 CSS 3 为基础自定义属性CSS 变量:root { --main-bg-color: whitesmoke; /* 在根元素上定义变量 */ } body { background-color: var(--main-bg-color); /* 通过 var() 引用 */ }计算函数calc()body { width: calc(100vw - 100px); /* 在样式表中执行运算 */ }规则嵌套.main { .bgred { /* 等价于 .main .bgred { } */ background: red; } .bggreen { /* 等价于 .main .bggreen { } */ background: green; } .bgblue { /* 无空格等价于 .main.bgblue { } */ background: blue; } }注意与空格的有无决定了生成的是后代选择器还是自身追加类与前面组合选择器的规则一致。Flexbox 弹性布局.container { display: flex; flex-direction: row; /* 主轴方向row / column 等 */ flex-wrap: wrap; /* 是否允许子项换行 */ justify-content: center; /* 主轴方向的对齐方式 */ align-items: center; /* 交叉轴方向的对齐方式 */ }这是构建响应式布局最常用的现代手段配合后面的媒体查询即可实现一套样式、多端适配。使用方式三种引入 CSS 的方法将样式表保存为.css扩展名文件后有以下三种引入方式!-- 方式一推荐在页面 head 中通过 link 引入外部样式表 -- link relstylesheet typetext/css hrefpath/to/style.css !-- 方式二在标记中嵌入 style 块 -- style a { color: purple; } /style !-- 方式三直接在元素上设置 style 属性内联样式 -- div styleborder: 1px solid red; /div三种方式的优先级依次升高内联最高后文级联一节会给出完整排序。级联Cascade与优先级样式冲突如何裁决一个元素可能被多个选择器同时命中同一属性也可能被多次赋值此时必须按以下规则裁决特异性specificity更高的规则胜出特异性相同时样式表中出现更晚的规则覆盖更早的规则若两条规则分别来自两个link引入的样式表且特异性相同则后链接的样式表生效。这正是级联Cascading一词的来源——样式规则层层叠加、按规则择优生效。看一个经典示例。给定以下 CSS/* A */ p.class1[attrvalue] /* B */ p.class1 { } /* C */ p.class2 { } /* D */ p { } /* E */ p { property: value !important; }以及如下标记p style/*F*/ property:value; classclass1 class2 attrvalue优先级从高到低为注意优先级是逐属性property计算的不是整个规则块E最高因为!important关键字但官方建议尽量避免使用它F其次因为它是内联样式A再次它的特异性最高含 3 个限定符——元素名p、类class1、属性attrvalueC第四虽然与B特异性相同但它在B之后出现后写覆盖先写B第五D最低只有元素名这一个限定符。媒体查询按设备与场景切换样式媒体查询是 CSS 3 特性允许你指定规则在何时生效——例如打印时、或特定屏幕尺寸/像素密度下。它不增加选择器的特异性。/* 所有设备通用的规则 */ h1 { font-size: 2em; color: white; background-color: black; } /* 打印时让 h1 少消耗墨水 */ media print { h1 { color: black; background-color: white; } } /* 屏幕宽度至少 480px 时放大标题字体 */ media screen and (min-width: 480px) { h1 { font-size: 3em; font-weight: normal; } }媒体查询可使用的特性包括width、height、device-width、device-height、orientation、aspect-ratio、device-aspect-ratio、color、color-index、monochrome、resolution、scan、grid其中大多数都可用min-或max-前缀限定范围。两点实战注意resolution在旧设备上不支持此时应改用device-pixel-ratio许多智能手机和平板会把页面按桌面视口渲染除非你提供了viewportmeta 标签head meta nameviewport contentwidthdevice-width; initial-scale1.0 /head兼容性新特性使用前先验证CSS 2 的大多数特性以及 CSS 3 的许多特性在所有主流浏览器和设备上可用但每个浏览器的支持进度不同。使用新特性前建议通过专业的兼容性查询工具逐一确认目标浏览器与设备的支持情况注意原教程所列外部资源站本文不展开外部链接仓库内另有大量可交叉参考的教程如 html.md 与西班牙语版 es/html.mdHTML 与 CSS 配合阅读效果更佳。仓库中的配套资源与进阶路径本教程在仓库内有两个可对照阅读的版本英文原版 css.md语法部分更全额外包含[attr*foo]包含匹配、:nth-child(n)、:active、选择器分组、:not、CSS 变量、calc()、嵌套与 Flexbox 等 CSS 3 特性西班牙语版 es/css.md即本文所依据的主体文档语言表述更贴近西语读者习惯。继续深入学习时可沿以下仓库内路径推进理解 CSS 的搭配语言 HTMLhtml.md 或 es/html.md了解样式预处理思路可参考仓库中的 sass.md 与 less.mdSass/LESS 即 CSS 的预处理方案若想参与本教程的维护与翻译可阅读贡献指南 CONTRIBUTING.md 与项目说明 README.md。结语CSS 的语法体系并不复杂一条规则 选择器 属性/值配合特异性与级联的裁决机制就能实现从静态排版到响应式布局的全部能力。本文覆盖的六大板块——选择器、属性与单位、级联优先级、媒体查询、CSS 3 现代特性与引入方式——正是日常前端开发中使用频率最高的核心知识。建议边读边在浏览器开发者工具中实时修改验证把每条规则都亲手跑一遍才能真正内化为自己的技能。赞分享文档教程【免费下载链接】learnxinyminutes-docsCode documentation written as code! How novel and totally my idea!项目地址https://gitcode.com/gh_mirrors/le/learnxinyminutes-docs点击查看免费下载相关推荐Learn X in Y minutes 之 CSS 速成指南选择器、级联优先级与媒体查询全解析Learn X in Y minutes 之 CSS 速成指南选择器、级联优先级与媒体查询全解析 本篇技术指南以开源仓库 learnxinyminutes d文档教程Learn X in Y minutes 之 SQL 入门实战指南从标准语法到多表查询的完整速成Learn X in Y minutes 之 SQL 入门实战指南从标准语法到多表查询的完整速成 结构化查询语言SQLStructured Query L文档教程Learn X in Y Minutes 仓库 ColdFusion 指南CFML 标签语法与 CFScript 脚本语法实战详解Learn X in Y Minutes 仓库 ColdFusion 指南CFML 标签语法与 CFScript 脚本语法实战详解 ColdFusion 是一文档教程上一篇PerfKit Benchmarker核心架构解析从虚拟机管理到基准执行下一篇Mistral-7B-v0.3中文无审查对话模型开启自由AI对话新时代创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考