css真难,那就从基础开始吧

CSS 基础全面解析:从核心概念到选择器实战

CSS(层叠样式表,Cascading Style Sheets)是前端开发的三大核心技术之一(另外两大是 HTML 和 JavaScript),主要负责控制网页的视觉表现(如颜色、字体、布局等)。本文结合 d:\lesson_si\css\basic 文件夹中的 readme.md3.html4.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 全称"层叠样式表",核心特性是层叠规则:当多个规则作用于同一元素时,根据优先级决定最终生效的样式。优先级由高到低:

  1. 行内样式 (直接写在 HTML 标签的 style 属性中,如 <p style="color: red;">)。
  2. ID 选择器 (如 #header)。
  3. 类选择器 (如 .box)、属性选择器(如 [type="text"])、伪类(如 :hover)。
  4. 元素选择器 (如 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 标签名选择(如 pdiv)。
  • 类选择器 :通过 class 属性选择,以 . 开头(如 .container)。
  • ID 选择器 :通过 id 属性选择,以 # 开头(如 #mian)。

2. 组合选择器:兄弟选择器

readme.md 重点介绍了兄弟选择器,用于选择同一父级下的平级元素:

  • 相邻兄弟选择器(+ :选择紧接在另一个元素之后 的兄弟元素(仅匹配下一个)。 语法A + B(选择 A 的下一个兄弟元素 B)。 示例

    css 复制代码
    h2 + p { color: red; }  /* 仅匹配紧接在 <h2> 后的第一个 <p> */
  • 通用兄弟选择器(~ :选择某个元素之后所有的兄弟元素 (匹配后续所有)。 语法A ~ B(选择 A 之后所有的兄弟元素 B)。 示例

    css 复制代码
    h2 ~ p { color: blue; }  /* 匹配 <h2> 之后所有 <p> */

3. 伪类选择器:元素的"特殊状态"

伪类选择器用于描述元素的特殊状态 (如用户交互)或在结构中的位置 (如第一个子元素)。3.html 中展示了多种伪类的实际应用:

(1)状态伪类(用户交互相关)
  • :hover:鼠标悬停时(如段落悬停背景变黄)。

    css 复制代码
    p:hover { background-color: yellow; }  /* 来自 3.html */
  • :active:元素被激活时(如按钮按下时变蓝)。

    css 复制代码
    button:active { background-color: blue; color: white; }  /* 来自 3.html */
  • :focus:元素获得焦点时(如输入框聚焦时边框变蓝)。

    css 复制代码
    input:focus { border: 2px solid blue; outline: none; }  /* 来自 3.html */
  • :checked:复选框/单选框被选中时(如选中复选框后,关联的 label 加粗)。

    css 复制代码
    input: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):选择奇数/偶数位置的子元素(如列表奇偶行变色)。

    css 复制代码
    li:nth-child(odd) { background-color: #e12828; }  /* 奇数行红色 */
    li:nth-child(even) { background-color: #85f4f4f8; }  /* 偶数行青色 */  /* 来自 3.html */
(3)条件伪类(排除或包含特定条件)
  • :not():排除符合条件的元素(如列表非最后一项添加底边距)。

    css 复制代码
    li:not(:last-child) { margin-bottom: 10px; }  /* 来自 3.html */

三、CSS 学习建议

对于新手,建议从以下路径逐步掌握 CSS:

  1. 基础入门 :掌握声明、声明块、选择器的基本语法,熟悉常见属性(如 colorfont-sizemargin)。
  2. 选择器进阶 :重点理解兄弟选择器、伪类选择器的使用场景(如 :hover 实现交互效果,:nth-child 控制列表样式)。
  3. 层叠与优先级 :通过 1.html 等示例实践,掌握不同选择器的优先级规则,避免样式冲突。
  4. 实战应用 :结合 3.html 中的伪类示例(如输入框聚焦、复选框选中效果),动手编写样式,加深理解。

统掌握 CSS 基础,为后续学习布局(如 Flex、Grid)和响应式设计打下坚实基础。

相关推荐
web打印社区26 分钟前
使用React如何静默打印页面:完整的前端打印解决方案
前端·javascript·vue.js·react.js·pdf·1024程序员节
喜欢踢足球的老罗27 分钟前
[特殊字符] PM2 入门实战:从 0 到线上托管 React SPA
前端·react.js·前端框架
小光学长37 分钟前
基于Vue的课程达成度分析系统t84pzgwk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Baklib梅梅2 小时前
探码科技再获“专精特新”认定:Baklib引领AI内容管理新方向
前端·ruby on rails·前端框架·ruby
南方以南_2 小时前
Chrome开发者工具
前端·chrome
YiHanXii2 小时前
this 输出题
前端·javascript·1024程序员节
楊无好2 小时前
React中ref
前端·react.js
程琬清君2 小时前
vue3 confirm倒计时
前端·1024程序员节
歪歪1002 小时前
在C#中详细介绍一下Visual Studio中如何使用数据可视化工具
开发语言·前端·c#·visual studio code·visual studio·1024程序员节
唔662 小时前
flutter实现web端实现效果
前端·flutter