CSS从入门到精通:一篇博客搞定网页样式
HTML是网页的骨架,CSS就是给骨架穿的漂亮衣服——没有CSS,网页就是一堆黑白文字加图片,有了CSS才能变成色彩丰富、布局精美的页面。这篇博客用最通俗的话,带你从CSS基础摸到精通的门槛。
一、CSS基础介绍:它是什么,怎么用?
1. CSS的定义
CSS(Cascading Style Sheets,层叠样式表),只负责网页的「外观」:颜色、字体、大小、位置、动画……和HTML(结构)、JavaScript(交互)并称网页三剑客。
2. HTML和CSS的分工
- HTML:写「结构」——比如这是标题
<h1>、那是段落<p>、还有张图片<img>。 - CSS:写「样式」——比如标题是红色、段落字号16px、图片在右边。
3. CSS的三种写法
| 写法 | 位置 | 适用场景 |
|---|---|---|
| 外部样式表 | 单独的.css文件,HTML用<link rel="stylesheet" href="style.css">引入 | 大项目,方便复用 |
| 内部样式 | HTML的<style>标签里(放在<head>中) | 单页面小样式 |
| 内联样式 | 元素的style属性里,比如<p style="color: red;"> | 临时改单个元素,不推荐(难维护) |
二、核心语法:选对元素,写对样式
CSS的核心逻辑只有两步:1. 选中要改的元素;2. 给它加样式。
1. 基础结构
| |
比如:
| |
2. 选择器大全(最常用的)
(1)基础选择器
| 写法 | 含义 | 例子 |
|---|---|---|
标签名 | 选中所有该标签 | p(所有段落) |
.类名 | 选中class="类名"的元素 | .btn(所有按钮) |
#ID名 | 选中id="ID名"的元素(ID唯一) | #header(页面头部) |
* | 选中所有元素(慎用) | *(全局样式) |
(2)复合选择器
| 写法 | 含义 | 例子 |
|---|---|---|
父元素 子元素 | 选中父元素内部所有子元素 | .nav a(导航里的所有链接) |
父元素 > 子元素 | 选中父元素直接子元素(不包含孙子) | .nav > a(导航的直接链接) |
元素1, 元素2 | 同时选中多个元素 | h1, h2(所有一级、二级标题) |
(3)伪类和伪元素
伪类:给元素「特殊状态」加样式,比如鼠标悬停:
1 2.btn:hover { background: #666; } /* 鼠标悬停按钮时变色 */ li:nth-child(2) { color: blue; } /* 选中第2个li元素 */伪元素:给元素「虚拟部分」加样式,比如前面加内容:
1h2::before { content: "★ "; } /* 每个h2前面加个星星 */
3. 常用属性和单位
(1)必学属性
| 类型 | 属性 | 例子 |
|---|---|---|
| 文本 | color(颜色)、font-size(字号)、font-weight(粗细)、text-align(对齐) | color: #333; font-size: 16px; |
| 背景 | background-color(纯色)、background-image(图片)、linear-gradient()(渐变) | background: linear-gradient(135deg, #fff, #000); |
| 盒子 | width(宽)、height(高)、padding(内边距)、margin(外边距)、border(边框) | width: 200px; padding: 10px; |
(2)常用单位
px:固定像素(比如边框1px)。rem:相对根元素(html)的字体大小(比如html { font-size: 16px; },1rem = 16px,适配移动端神器)。%:相对父元素的百分比(比如width: 50%是父元素的一半宽)。vw/vh:视口宽度/高度的1%(比如width: 100vw是屏幕全宽)。
4. 注释
| |
三、布局核心:从盒子模型到Flex/Grid
布局是CSS的重中之重——学会这部分,你就能把元素放到网页的任何位置。
1. 盒子模型(所有元素都是「盒子」)
把每个HTML元素想象成一个快递盒:
content:盒子里的「东西」(文字、图片)。padding:「泡沫垫」(内容和边框的距离)。border:「盒子本身」(边框)。margin:「盒子和其他盒子的距离」(外边距)。
关键属性:box-sizing
content-box(默认):width只算content,加padding和border会让盒子变宽。border-box(推荐用):width包含content + padding + border,布局更省心。1* { box-sizing: border-box; } /* 全局设为border-box */
2. 布局方式(从传统到现代)
(1)标准流(默认)
- 块级元素(
div、h1、p):独占一行,从上到下排。 - 行内元素(
span、a、img):并排显示,从左到右排。
(2)Flex布局(一维布局神器)
适合横向/纵向排列元素(比如导航栏、卡片列表),记住「容器」和「项目」两个概念:
- 容器:加
display: flex;的元素。 - 项目:容器里的子元素。
容器常用属性
| |
项目常用属性
| |
(3)Grid布局(二维布局神器)
适合同时控制行和列(比如整体网页布局、复杂卡片网格),同样分「容器」和「项目」:
容器常用属性
| |
项目常用属性
| |
(4)定位(精准控制位置)
适合「固定在屏幕」「覆盖在其他元素上」的场景,通过position属性控制:
| 值 | 含义 | 特点 |
|---|---|---|
static | 默认 | 正常流,不定位 |
relative | 相对自身 | 不脱离流,相对于「原来的位置」移动 |
absolute | 相对父元素 | 脱离流,相对于「最近的非static父元素」移动 |
fixed | 相对视口 | 脱离流,固定在屏幕上(比如回到顶部按钮) |
sticky | 粘性定位 | 滚动时吸附(比如导航栏滚动到顶部后固定) |
例子:
| |
四、进阶技巧:让网页更高级
1. CSS变量(自定义属性)
方便复用颜色、尺寸,改主题时不用一个个改:
| |
2. 渐变
不用图片就能做渐变背景:
线性渐变:
linear-gradient(角度, 颜色1, 颜色2)1background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);径向渐变:
radial-gradient(形状, 颜色1, 颜色2)1background: radial-gradient(circle, #fff 0%, #000 100%);
3. 动画
(1)过渡(Transition):简单的状态变化
比如鼠标悬停时平滑变色:
| |
(2)关键帧动画(Animation):复杂动画
先定义动画,再调用:
| |
4. 响应式设计(适配不同屏幕)
用媒体查询,根据屏幕宽度改样式:
| |
五、应用场景:CSS能做什么?
- 网页整体布局:用Grid做「头部-内容-侧边栏-底部」,用Flex做导航栏。
- 组件样式:按钮(圆角+悬停效果)、卡片(阴影+圆角)、表单(输入框样式)。
- 响应式适配:手机端菜单变汉堡、图片自适应宽度、文字大小调整。
- 动画效果:加载动画、滚动渐显、按钮点击反馈、轮播图过渡。
- 主题切换:用CSS变量切换白天/黑夜模式。
六、学习路径:从入门到精通
- 基础阶段:先学选择器、常用属性、盒子模型,做简单的静态页面。
- 布局阶段:重点练Flex和Grid(这是现在的主流),模仿豆瓣、淘宝的布局。
- 进阶阶段:学动画、响应式、CSS变量,做一个带交互的个人博客。
- 精通阶段:看CSS规范、学CSS新特性(比如
:has()选择器、container queries)、优化性能。
最后
CSS入门容易,但精通需要多练——别光看,打开编辑器写几行代码,改改样式,看看效果,慢慢就会了。下一篇我们讲Flex布局的实战案例,记得动手实践!
张芷铭的个人博客
Comments