CSS 基础全面解析:从核心概念到选择器实战
CSS(层叠样式表,Cascading Style Sheets)是前端开发的三大核心技术之一(另外两大是 HTML 和 JavaScript),主要负责控制网页的视觉表现(如颜色、字体、布局等)。本文结合 d:\lesson_si\css\basic
文件夹中的 readme.md
、3.html
、4.html
等文件内容,从基础概念到实战应用,系统梳理 CSS 核心知识。
一、CSS 核心基础概念
1. 声明(Declaration):最小样式单元
readme.md
中明确提到:"一个属性与值的键值对成为声明(declaration)"。 声明是 CSS 中最基础的样式指令,由 属性(Property) 和 值(Value) 组成,用英文冒号 :
分隔,以分号 ;
结尾。 示例:
css
color: red; /* 属性:文字颜色,值:红色 */
font-size: 16px; /* 属性:文字大小,值:16像素 */
2. 声明块(Declaration Block):多个声明的集合
readme.md
指出:"一个声明块 {}
中可有多个声明"。 声明块是用大括号 {}
包裹的一组声明,这些声明会同时作用 于目标元素。 示例:
css
p {
color: red; /* 文字颜色 */
font-size: 16px; /* 文字大小 */
text-align: center; /* 文字居中 */
}
3. 选择器(Selector):指定样式作用对象
选择器的作用是确定哪些 HTML 元素需要应用声明块中的样式 。选择器与声明块组合后,称为"规则集(Ruleset)"。 readme.md
强调:"选择器 申明块作用的选择器选择的对应元素"。 示例:
css
/* 选择所有 <p> 标签,应用声明块中的样式 */
p {
color: red;
}
4. 层叠(Cascade):样式冲突的解决规则
CSS 全称"层叠样式表",核心特性是层叠规则:当多个规则作用于同一元素时,根据优先级决定最终生效的样式。优先级由高到低:
- 行内样式 (直接写在 HTML 标签的
style
属性中,如<p style="color: red;">
)。 - ID 选择器 (如
#header
)。 - 类选择器 (如
.box
)、属性选择器(如[type="text"]
)、伪类(如:hover
)。 - 元素选择器 (如
p
)、伪元素(如::before
)。
示例(来自 1.html
) :
xml
<style>
p { color: red; } /* 元素选择器,优先级最低 */
.container p { color: blue; } /* 类选择器,优先级更高 */
#mian p { color: yellow; } /* ID 选择器,优先级最高 */
</style>
<body>
<p>这是另一个段落</p> <!-- 应用 p 选择器,红色 -->
<div id="mian" class="container">
<p>这是一个段落</p> <!-- 应用 #mian p 选择器,黄色 -->
</div>
</body>
二、CSS 选择器分类与实战
1. 基础选择器
- 元素选择器 :直接通过 HTML 标签名选择(如
p
、div
)。 - 类选择器 :通过
class
属性选择,以.
开头(如.container
)。 - ID 选择器 :通过
id
属性选择,以#
开头(如#mian
)。
2. 组合选择器:兄弟选择器
readme.md
重点介绍了兄弟选择器,用于选择同一父级下的平级元素:
-
相邻兄弟选择器(
+
) :选择紧接在另一个元素之后 的兄弟元素(仅匹配下一个)。 语法 :A + B
(选择 A 的下一个兄弟元素 B)。 示例:cssh2 + p { color: red; } /* 仅匹配紧接在 <h2> 后的第一个 <p> */
-
通用兄弟选择器(
~
) :选择某个元素之后所有的兄弟元素 (匹配后续所有)。 语法 :A ~ B
(选择 A 之后所有的兄弟元素 B)。 示例:cssh2 ~ p { color: blue; } /* 匹配 <h2> 之后所有 <p> */
3. 伪类选择器:元素的"特殊状态"
伪类选择器用于描述元素的特殊状态 (如用户交互)或在结构中的位置 (如第一个子元素)。3.html
中展示了多种伪类的实际应用:
(1)状态伪类(用户交互相关)
-
:hover
:鼠标悬停时(如段落悬停背景变黄)。cssp:hover { background-color: yellow; } /* 来自 3.html */
-
:active
:元素被激活时(如按钮按下时变蓝)。cssbutton:active { background-color: blue; color: white; } /* 来自 3.html */
-
:focus
:元素获得焦点时(如输入框聚焦时边框变蓝)。cssinput:focus { border: 2px solid blue; outline: none; } /* 来自 3.html */
-
:checked
:复选框/单选框被选中时(如选中复选框后,关联的label
加粗)。cssinput:checked + label { font-weight: bold; color: #28a4a4; } /* 来自 3.html */
(2)结构伪类(元素位置相关)
-
:nth-child(n)
:选择父元素的第n
个子元素(不区分元素类型 )。 示例(来自4.html
) :css.container p:nth-child(2) { background-color: burlywood; } /* 选择 .container 的第二个子元素(无论是否是 <p>),如果是 <p> 则生效 */
-
:nth-of-type(n)
:选择父元素中同类型 的第n
个子元素(仅匹配指定类型)。 示例(来自4.html
) :css.container#demo p:nth-of-type(2) { background-color: blue; } /* 选择 .container#demo 中所有 <p> 的第二个(仅匹配 <p> 类型) */
-
:nth-child(odd/even)
:选择奇数/偶数位置的子元素(如列表奇偶行变色)。cssli:nth-child(odd) { background-color: #e12828; } /* 奇数行红色 */ li:nth-child(even) { background-color: #85f4f4f8; } /* 偶数行青色 */ /* 来自 3.html */
(3)条件伪类(排除或包含特定条件)
-
:not()
:排除符合条件的元素(如列表非最后一项添加底边距)。cssli:not(:last-child) { margin-bottom: 10px; } /* 来自 3.html */
三、CSS 学习建议
对于新手,建议从以下路径逐步掌握 CSS:
- 基础入门 :掌握声明、声明块、选择器的基本语法,熟悉常见属性(如
color
、font-size
、margin
)。 - 选择器进阶 :重点理解兄弟选择器、伪类选择器的使用场景(如
:hover
实现交互效果,:nth-child
控制列表样式)。 - 层叠与优先级 :通过
1.html
等示例实践,掌握不同选择器的优先级规则,避免样式冲突。 - 实战应用 :结合
3.html
中的伪类示例(如输入框聚焦、复选框选中效果),动手编写样式,加深理解。
统掌握 CSS 基础,为后续学习布局(如 Flex、Grid)和响应式设计打下坚实基础。