news 2026/4/16 14:21:01

CSS3核心基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CSS3核心基础

我们继续学习CSS3,两小时内掌握 CSS3 的核心基础,并能用它来美化你的 HTML 网页。CSS3 是网页的“衣服和妆容”,让原本枯燥的 HTML 变得美观、现代、有交互感。

下面我将以零基础小白视角,用最清晰、最实用、最通俗易懂的方式,带你快速掌握 CSS3 的核心知识,并配上多个完整可运行的案例

一、什么是 CSS3?

  • CSS全称是Cascading Style Sheets层叠样式表)。
  • 它的作用是:控制网页的外观——颜色、字体、布局、动画等。
  • CSS3是 CSS 的最新版本,新增了圆角、阴影、动画、渐变、响应式布局等强大功能。

✅ 简单说:HTML 是网页的“骨架”,CSS 是网页的“皮肤和衣服”,即网页的外观。

二、CSS 基本语法

选择器 { 属性: 值; 属性: 值; }

示例:

h1 { color: red; font-size: 24px; }
  • h1是选择器(选中所有<h1>标签)。
  • color是属性(文字颜色)。
  • red是color属性的值。
  • 每条规则以;结尾。

CSS3 选择器是“如何选中 HTML 元素”的核心工具。掌握它们,你就能精准地为页面中的任意元素设置样式。

一、什么是 CSS 选择器?

选择器(Selector)是 CSS 规则的第一部分,用来“告诉浏览器:我要给哪些 HTML 元素加样式”。

p { color: red; }

上面的p就是一个选择器,表示“选中所有<p>标签”。

二、CSS3 选择器分类详解

1. 基础选择器(最常用)
选择器作用示例
元素选择器选中指定标签名的元素p { color: red; }
类选择器.class选中class="xxx"的元素.btn { background: blue; }
ID 选择器#id选中id="xxx"的元素(唯一)#header { width: 100%; }
通配符选择器*选中所有元素* { margin: 0; padding: 0; }
示例:
<p class="highlight" id="intro">这是一段文字</p>
p { color: black; } .highlight { font-weight: bold; } #intro { border: 1px solid #ccc; } * { box-sizing: border-box; }

注意:

  • class可重复使用,适合多个元素。
  • id页面中应唯一,优先级最高。
2. 组合选择器(组合多个条件)
选择器作用示例
后代选择器A B选中 A 内部的所有 B(无论嵌套多深)div p→ 所有在 div 中的 p
子元素选择器A > B选中 A 的直接子元素 B(只一层)ul > li→ ul 的直接 li 子项
相邻兄弟选择器A + B选中紧接在 A 后面的 B 兄弟元素h1 + p→ 紧跟 h1 的第一个 p
通用兄弟选择器A ~ B选中 A 后面所有的 B 兄弟元素h1 ~ p→ h1 后面所有 p
示例:
<div> <p>第一段</p> <p>第二段</p> </div> <h1>标题</h1> <p>介绍1</p> <p>介绍2</p>
div p { color: blue; } /* 两个 p 都变蓝 */ div > p { font-size: 18px; } /* 只有 div 的直接子 p 生效 */ h1 + p { font-weight: bold; } /* 只有“介绍1”加粗 */ h1 ~ p { background: yellow; } /* “介绍1”和“介绍2”都黄底 */
3. 属性选择器(根据属性选中)
选择器作用示例
[attr]有某个属性的元素[href]→ 所有带 href 的 a 标签
[attr=value]属性等于某值[type="text"]→ 文本输入框
[attr~=value]属性包含单词(空格分隔)[class~="btn"]→ class 包含 btn
`[attr=value]`属性以 value 开头或 value- 开头
[attr^=value]属性值以 value 开头[src^="https"]→ HTTPS 图片
[attr$=value]属性值以 value 结尾[href$=".pdf"]→ 所有 PDF 链接
[attr*=value]属性值包含 value[title*="教程"]→ 标题含“教程”
示例:
/* 所有外部链接加图标 */ a[href^="http"]::after { content: " 🔗"; } /* 所有 PDF 下载链接变红 */ a[href$=".pdf"] { color: red; } /* 所有密码输入框 */ input[type="password"] { background: #f0f0f0; }
4. 伪类选择器(基于状态或位置)
选择器作用示例
:hover鼠标悬停时a:hover { color: red; }
:focus元素获得焦点(如输入框被点击)input:focus { border: 2px solid blue; }
:active元素被激活(如按钮按下)button:active { transform: scale(0.95); }
:visited已访问的链接a:visited { color: purple; }
:first-child第一个子元素li:first-child→ 第一个 li
:last-child最后一个子元素li:last-child→ 最后一个 li
:nth-child(n)第 n 个子元素tr:nth-child(2n)→ 偶数行
:nth-of-type(n)同类型第 n 个p:nth-of-type(2)→ 第二个 p
:not(selector)不匹配某个选择器:not(.red)→ 不是 .red 的元素
实用案例:
/* 表格隔行变色 */ tr:nth-child(even) { background: #f9f9f9; } /* 第一个段落加大字号 */ p:first-child { font-size: 1.2em; font-weight: bold; } /* 按钮悬停效果 */ .button:hover { background: #0056b3; } /* 输入框聚焦时发光 */ input:focus { outline: none; box-shadow: 0 0 5px #007bff; } /* 排除某个元素 */ li:not(:last-child) { margin-bottom: 10px; }
5. 伪元素选择器(创建虚拟元素)

用于选中元素的特定部分,如首字、首行、或插入内容。

选择器作用示例
::before在元素内容前插入内容p::before { content: "📌 "; }
::after在元素内容后插入内容a::after { content: " →"; }
::first-letter选中首字母(常用于首字下沉)p::first-letter { font-size: 2em; }
::first-line选中第一行p::first-line { font-weight: bold; }
::selection选中文本时的样式::selection { background: yellow; }
示例:
/* 引用开头加引号 */ blockquote::before { content: "“"; font-size: 2em; color: #ccc; } /* 清除浮动(经典用法) */ .clearfix::after { content: ""; display: block; clear: both; } /* 首字下沉 */ p::first-letter { font-size: 3em; float: left; margin-right: 8px; }

三、选择器优先级(权重)

当多个规则冲突时,浏览器按优先级决定用哪个。

选择器类型权重
内联样式style=""1000
#id100
.class,[attr],:hover10
元素选择器p,div1
*通配符0

计算示例:

  • #nav .item a→ 100 + 10 + 1 =111
  • div.sidebar p→ 1 + 10 + 1 =12
  • 所以前者优先级更高。

提示:避免滥用!important,它会破坏样式可维护性。

四、实战案例:用选择器美化导航菜单

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>选择器实战</title> <style> nav ul { list-style: none; padding: 0; display: flex; background: #333; } nav li { margin: 0 10px; } nav a { display: block; padding: 10px 15px; color: white; text-decoration: none; border-radius: 5px; transition: background 0.3s; } /* 鼠标悬停 */ nav a:hover { background: #007bff; } /* 当前页面链接高亮 */ nav a[aria-current="page"] { background: #dc3545; font-weight: bold; } /* 第一个菜单项特殊样式 */ nav li:first-child a { margin-left: 0; } </style> </head> <body> <nav> <ul> <li><a href="#" aria-current="page">首页</a></li> <li><a href="#">关于</a></li> <li><a href="#">服务</a></li> <li><a href="#">联系</a></li> </ul> </nav> </body> </html>

五、总结:CSS3 选择器速查表

类型示例说明
基础p,.class,#id,*最常用
组合div p,div > p,h1 + p,h1 ~ p精准定位
属性[href],[type="text"],[href$=".pdf"]动态匹配
伪类:hover,:focus,:nth-child(2n),:not(.red)状态与位置
伪元素::before,::after,::first-letter虚拟内容

三、如何在 HTML 中使用 CSS?

方法1:内联样式(不推荐,仅了解)

<p style="color: blue; font-size: 18px;">这段文字是蓝色的</p>

方法2:内部样式表(推荐初学者)

<head> <style> p { color: blue; font-size: 18px; } </style> </head>

方法3:外部样式表(最佳实践,实际项目中常用)

  1. 创建一个文件:style.css
  2. 在 HTML 中引入:
<head> <link rel="stylesheet" href="style.css"> </head>

建议:初学用“内部样式表”,熟练后用“外部样式表”。

四、CSS3 核心功能与实战案例(重点!)

1. 文本样式

p { color: #333; /* 文字颜色 */ font-size: 16px; /* 字号 */ font-family: Arial, sans-serif; /* 字体 */ text-align: center; /* 对齐:left, center, right */ line-height: 1.5; /* 行高 */ text-decoration: none; /* 去掉下划线(常用于a标签) */ }

2. 背景样式

body { background-color: #f0f0f0; /* 背景颜色 */ background-image: url('bg.jpg'); /* 背景图片 */ background-repeat: no-repeat; /* 不重复 */ background-position: center; /* 居中 */ background-size: cover; /* 图片覆盖整个区域 */ }

background: #f0f0f0 url(bg.jpg) no-repeat center;可简写。

3. 盒模型(Box Model)——CSS 核心概念!

每个元素都是一个“盒子”,包含:

  • width(宽)/height(高):内容区域。
  • padding:内边距(内容与边框之间)。
  • border:边框。
  • margin:外边距(盒子与其他元素的距离)。
.box { width: 200px; height: 100px; padding: 20px; border: 2px solid #333; margin: 10px; box-sizing: border-box; /* 让 padding 和 border 包含在 width 内 */ }

注意:不加box-sizing: border-box;容易导致布局错乱!

4. 圆角与阴影(CSS3 新特性)

.card { border-radius: 15px; /* 圆角 */ box-shadow: 5px 5px 10px rgba(0,0,0,0.2); /* 阴影:水平 垂直 模糊 颜色 */ transition: box-shadow 0.3s; /* 平滑过渡 */ } .card:hover { box-shadow: 10px 10px 20px rgba(0,0,0,0.4); /* 鼠标悬停时阴影变大 */ }

5. 渐变背景(CSS3)

.gradient-bg { background: linear-gradient(45deg, #ff6b6b, #5f27cd); height: 200px; }
  • linear-gradient:线性渐变。
  • 45deg:角度。
  • 支持多种颜色:#ff6b6b, #5f27cd, #00d2d3

6. Flex 布局(CSS3 布局神器)

让元素水平垂直居中变得极其简单!

.container { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ height: 100vh; /* 占满整个视口高度 */ }
<div class="container"> <h1>居中的标题</h1> </div>

Flex 是现代网页布局的核心,必须掌握!

7. 动画与过渡(CSS3)

过渡(hover 效果)
.button { background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 5px; transition: background 0.3s; } .button:hover { background: #0056b3; /* 鼠标悬停时变深蓝 */ }
关键帧动画
@keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } } .bouncing { animation: bounce 1s infinite; }

五、实战案例(完整 HTML + CSS)

案例1:美化按钮

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS3 按钮</title> <style> .btn { display: inline-block; padding: 12px 24px; background: linear-gradient(45deg, #667eea, #764ba2); color: white; text-decoration: none; border-radius: 25px; box-shadow: 0 4px 15px rgba(0,0,0,0.2); transition: all 0.3s; font-weight: bold; } .btn:hover { transform: translateY(-3px); box-shadow: 0 6px 20px rgba(0,0,0,0.3); } </style> </head> <body> <a href="#" class="btn">点击我</a> </body> </html>

案例2:卡片式布局

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS3 卡片</title> <style> .card { width: 300px; padding: 20px; background: white; border-radius: 15px; box-shadow: 0 10px 20px rgba(0,0,0,0.1); margin: 20px auto; text-align: center; transition: transform 0.3s; } .card:hover { transform: scale(1.05); } .card img { width: 100%; border-radius: 10px; } </style> </head> <body> <div class="card"> <img src="https://via.placeholder.com/300x200" alt="示例图片"> <h3>卡片标题</h3> <p>这是一段描述文字,展示CSS3的美化能力。</p> </div> </body> </html>

案例3:居中登录框

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>登录框</title> <style> body { margin: 0; font-family: Arial, sans-serif; background: linear-gradient(45deg, #f093fb, #f5576c); height: 100vh; display: flex; justify-content: center; align-items: center; } .login-box { background: white; padding: 40px; border-radius: 20px; box-shadow: 0 15px 30px rgba(0,0,0,0.2); width: 300px; text-align: center; } input { width: 100%; padding: 10px; margin: 10px 0; border: 1px solid #ddd; border-radius: 8px; box-sizing: border-box; } button { background: #007bff; color: white; border: none; padding: 12px; width: 100%; border-radius: 8px; cursor: pointer; } </style> </head> <body> <div class="login-box"> <h2>登录</h2> <input type="text" placeholder="用户名"> <input type="password" placeholder="密码"> <button>登录</button> </div> </body> </html>

六、总结:你将掌握的 CSS3 核心技能

技能用途
选择器选中 HTML 元素
盒模型理解布局基础
border-radius圆角按钮、卡片
box-shadow阴影效果
background: linear-gradient()渐变背景
display: flex灵活布局、居中对齐
transition平滑动画效果
@keyframes自定义动画

下一步建议

  1. 继续学习响应式设计:使用@media让网页在手机上也能完美显示。
  2. 学习 CSS 框架:如 Bootstrap、Tailwind CSS,提升开发效率。
  3. 结合 JavaScript:实现更复杂的交互效果。

现在,你已经具备了用 CSS3 美化网页的能力!打开编辑器,复制上面的案例,动手改一改颜色、大小、动画,看看效果变化,这是最快的学习方式!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 15:36:32

AI开发者必读:Qwen2.5-7B开源模型部署趋势与优化策略

AI开发者必读&#xff1a;Qwen2.5-7B开源模型部署趋势与优化策略 1. Qwen2.5-7B 模型技术全景解析 1.1 模型背景与核心定位 随着大语言模型&#xff08;LLM&#xff09;在自然语言理解、代码生成和多模态任务中的广泛应用&#xff0c;阿里云推出的 Qwen2.5 系列 成为当前最具…

作者头像 李华
网站建设 2026/4/16 12:17:07

ISR编写规范详解:嵌入式系统中断处理完整指南

中断服务例程&#xff08;ISR&#xff09;实战指南&#xff1a;嵌入式系统中的高效响应艺术 在嵌入式开发的世界里&#xff0c;有一个“看不见的指挥官”时刻在幕后调度着系统的节奏——它就是 中断服务例程 &#xff08;Interrupt Service Routine, ISR&#xff09;。当你按…

作者头像 李华
网站建设 2026/3/25 13:09:00

Qwen2.5-7B优化指南:内存占用与计算效率平衡策略

Qwen2.5-7B优化指南&#xff1a;内存占用与计算效率平衡策略 1. 背景与挑战&#xff1a;大模型推理中的资源博弈 随着大语言模型&#xff08;LLM&#xff09;在自然语言处理、代码生成、多模态理解等领域的广泛应用&#xff0c;如何在有限的硬件资源下高效部署和运行这些模型&…

作者头像 李华
网站建设 2026/4/9 16:31:00

Minlo是什么?

MinIO 是一款高性能、开源、分布式的对象存储系统&#xff0c;专为存储海量非结构化数据设计&#xff0c;100% 兼容 Amazon S3 API&#xff0c;被广泛应用于云原生、大数据、AI/ML 等场景。简单来说&#xff0c;它就像一个 "专业的非结构化数据仓库"&#xff0c;可以…

作者头像 李华
网站建设 2026/4/16 5:37:18

公网或外网是什么意思?

其实外网是个宽泛的说法&#xff0c;公网是外网里的核心组成部分&#xff0c;两者是包含与被包含的关系&#xff0c;用大白话和例子讲就很好懂&#xff1a;1. 先分清两个核心概念概念通俗解释特点例子内网封闭的局部网络&#xff0c;仅限内部设备互相访问① IP 地址是私有段&am…

作者头像 李华
网站建设 2026/4/16 7:10:17

PWM调速如何接入L298N电机驱动原理图?智能小车实例演示

PWM调速如何接入L298N&#xff1f;一文搞懂智能小车电机控制的底层逻辑你有没有遇到过这种情况&#xff1a;给小车通电后&#xff0c;电机“嗡”地一声响&#xff0c;却动不起来&#xff1b;或者明明代码写好了前进&#xff0c;轮子却原地打转&#xff1f;更糟的是&#xff0c;…

作者头像 李华