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

相关推荐
Nueuis18 分钟前
微信小程序前端面经
前端·微信小程序·小程序
_r0bin_3 小时前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
IT瘾君3 小时前
JavaWeb:前端工程化-Vue
前端·javascript·vue.js
potender3 小时前
前端框架Vue
前端·vue.js·前端框架
站在风口的猪11083 小时前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂4 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler
MoFe14 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
去旅行、在路上4 小时前
chrome使用手机调试触屏web
前端·chrome
Hygge-star5 小时前
【Flask】:轻量级Python Web框架详解
css·flask·html·学习方法·web app
Aphasia3115 小时前
模式验证库——zod
前端·react.js