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)和响应式设计打下坚实基础。

相关推荐
万少39 分钟前
第五款 HarmonyOS 上架作品 奇趣故事匣 来了
前端·harmonyos·客户端
OpenGL1 小时前
Android targetSdkVersion升级至35(Android15)相关问题
前端
rzl021 小时前
java web5(黑马)
java·开发语言·前端
Amy.Wang1 小时前
前端如何实现电子签名
前端·javascript·html5
今天又在摸鱼1 小时前
Vue3-组件化-Vue核心思想之一
前端·javascript·vue.js
蓝婷儿1 小时前
每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
前端
百锦再1 小时前
Vue中对象赋值问题:对象引用被保留,仅部分属性被覆盖
前端·javascript·vue.js·vue·web·reactive·ref
jingling5551 小时前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
拾光拾趣录1 小时前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空00001 小时前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试