学css的文档
时间:2026-03-15 标签: web, css,我忽然意识到我还没怎么学正儿八经css,就让d老师写了一个,凑合看吧
CSS 学习文档
CSS(Cascading Style Sheets,层叠样式表)用于描述 HTML 元素的显示样式。它可以控制网页的布局、颜色、字体、动画等。本教程将系统介绍 CSS 的常用概念和属性。
1. CSS 简介
CSS 是一种样式表语言,用来定义 HTML 文档的外观和格式。
优点:
- 内容与表现分离,便于维护
- 样式可复用,减少代码量
- 提供更丰富的样式控制(如动画、响应式布局)
2. CSS 语法
CSS 规则由选择器和声明块组成:
1 | 选择器 { |
示例:
1 | p { |
3. CSS 选择器
3.1 基本选择器
| 选择器 | 示例 | 描述 |
|---|---|---|
| 元素选择器 | p |
选择所有 <p> 元素 |
| 类选择器 | .classname |
选择 class="classname" 的元素 |
| ID 选择器 | #idname |
选择 id="idname" 的元素 |
| 通配符选择器 | * |
选择所有元素 |
3.2 组合器选择器
| 组合器 | 示例 | 描述 |
|---|---|---|
| 后代 | div p |
选择 <div> 内的所有 <p> |
| 子元素 | div > p |
选择 <div> 的直接子元素 <p> |
| 相邻兄弟 | h1 + p |
选择紧接在 <h1> 后的 <p> |
| 通用兄弟 | h1 ~ p |
选择 <h1> 后面的所有 <p> |
3.3 属性选择器
1 | [attr] /* 包含 attr 属性的元素 */ |
3.4 伪类与伪元素
见后续章节。
4. CSS 使用方式
内联样式:在 HTML 标签中使用
style属性。1
<p style="color: blue;">文本</p>
内部样式:在
<head>中使用<style>标签。1
<style> p { color: blue; } </style>
外部样式:使用
<link>引入外部.css文件。1
<link rel="stylesheet" href="style.css">
5. CSS 注释
1 | /* 这是单行注释 */ |
6. CSS 颜色
常用颜色表示法:
- 颜色名:
red,blue等 - 十六进制:
#ff0000(简写#f00) - RGB/RGBA:
rgb(255,0,0),rgba(255,0,0,0.5) - HSL/HSLA:
hsl(0,100%,50%),hsla(0,100%,50%,0.5)
7. CSS 背景
1 | div { |
简写:background: #fff url("img.png") no-repeat center;
8. CSS 边框
1 | div { |
简写:border: 2px solid red;
还可以单独设置各边:border-top, border-right 等。
圆角边框:border-radius: 10px;(可设四个值:左上、右上、右下、左下)
9. CSS 边距(margin)和内边距(padding)
margin:元素外边距,控制元素与其他元素的距离。
1
2
3margin: 10px; /* 四边相同 */
margin: 10px 20px; /* 上下 10px,左右 20px */
margin: 10px 20px 30px 40px; /* 上 右 下 左 */padding:元素内边距,控制内容与边框的距离。
语法与margin相同。
10. CSS 盒模型
所有 HTML 元素可以看作一个盒子,包含:
- 内容(content)
- 内边距(padding)
- 边框(border)
- 外边距(margin)
标准盒模型:width 和 height 只设置内容的宽度/高度。
怪异盒模型(IE 盒模型):box-sizing: border-box; 使 width 包含内容、内边距和边框。
11. CSS 轮廓(outline)
轮廓绘制在边框外面,不占空间。
1 | outline: 2px dashed blue; |
12. CSS 文本
1 | p { |
13. CSS 字体
1 | body { |
简写:font: italic bold 16px/1.5 "Arial", sans-serif;
14. CSS 图标
通常使用字体图标库(如 Font Awesome)或 SVG。
1 | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> |
15. CSS 链接
链接伪类控制不同状态:
1 | a:link { color: blue; } /* 未访问 */ |
顺序应为 LVHA。
16. CSS 列表
1 | ul { |
简写:list-style: square inside url("marker.png");
17. CSS 表格
1 | table { |
18. CSS 显示(display)和可见性(visibility)
1 | display: block; /* 块级元素 */ |
19. CSS 定位(position)
- static:默认,正常文档流。
- relative:相对其正常位置偏移,保留原空间。
- absolute:相对于最近的已定位祖先(非 static)定位,脱离文档流。
- fixed:相对于浏览器窗口定位,脱离文档流。
- sticky:粘性定位,基于滚动位置切换 relative/fixed。
1 | div { |
20. CSS 层叠(z-index)
z-index 控制定位元素在 Z 轴上的堆叠顺序,值越大越靠上。
1 | z-index: 10; /* 仅对定位元素有效 */ |
21. CSS 溢出(overflow)
控制内容溢出容器时的行为:
1 | overflow: visible; /* 默认,溢出可见 */ |
可单独设置 overflow-x 和 overflow-y。
22. CSS 浮动(float)和清除(clear)
1 | img { |
清除浮动:
1 | .clearfix::after { |
23. CSS 对齐
水平居中:
- 块元素:
margin: 0 auto; - 行内/行内块元素:父元素
text-align: center;
垂直居中:
- 单行文本:设置
line-height等于容器高度。 - 绝对定位 + transform:
1
2
3position: absolute;
top: 50%;
transform: translateY(-50%); - Flexbox(推荐):
1
2
3display: flex;
align-items: center;
justify-content: center;
24. CSS 组合器
已在选择器部分介绍(后代、子、相邻兄弟、通用兄弟)。
25. CSS 伪类
伪类用于定义元素的特殊状态。常见的有:
- 结构伪类:
:first-child,:last-child,:nth-child(n),:nth-of-type(n) - 状态伪类:
:hover,:focus,:checked,:disabled - 其他:
:not(selector),:target,:empty
示例:
1 | li:nth-child(odd) { background: gray; } |
26. CSS 伪元素
伪元素用于设置元素指定部分的样式。常用:
::first-line:首行::first-letter:首字母::before:在元素内容前插入内容(需content)::after:在元素内容后插入内容::selection:用户选中的部分
示例:
1 | p::first-line { font-weight: bold; } |
27. CSS 不透明度(opacity)
1 | div { |
也可用 rgba() 或 hsla() 设置半透明背景。
28. CSS 导航栏
垂直导航:
1 | ul { |
水平导航:
1 | li { |
29. CSS 下拉菜单
利用 hover 控制隐藏元素的显示:
1 | .dropdown { |
30. CSS 提示工具
利用伪元素和定位实现:
1 | .tooltip { |
31. CSS 图像拼合(Sprite)
将多张小图合成一张大图,通过 background-position 显示所需部分,减少 HTTP 请求。
1 | .icon { |
32. CSS 媒体类型
用于不同媒体设备,但现代开发多使用媒体查询(见响应式设计)。
1 | @media print { |
33. CSS 属性选择器
见 3.3 节。
34. CSS 计数器
自动编号,如章节标题:
1 | body { |
35. CSS 布局 - Flexbox
一维布局模型,用于行或列排列。
容器属性:
1 | .container { |
项目属性:
1 | .item { |
简写:flex: 1 1 200px; 等价于 flex-grow:1; flex-shrink:1; flex-basis:200px;
36. CSS 布局 - Grid
二维布局模型。
容器属性:
1 | .container { |
项目属性:
1 | .item { |
37. CSS 响应式设计(媒体查询)
根据设备特性(如视口宽度)应用不同样式。
1 | /* 移动优先:基础样式 */ |
常用断点:576px, 768px, 992px, 1200px。
38. CSS @规则
@import:导入其他样式表。@font-face:定义自定义字体。@keyframes:定义动画关键帧。@media:媒体查询。@supports:检测浏览器是否支持某属性。
示例(@font-face):
1 | @font-face { |
39. CSS 动画
使用 @keyframes 定义动画序列,然后通过 animation 属性调用。
定义关键帧:
1 | @keyframes example { |
应用动画:
1 | div { |
简写:animation: example 4s ease 1s infinite alternate;
40. CSS 过渡(transition)
平滑改变属性值。
1 | div { |
属性:transition-property, duration, timing-function, delay。
简写:transition: all 0.3s ease;
41. CSS 变换(transform)
对元素进行旋转、缩放、移动、倾斜。
1 | transform: rotate(45deg); /* 旋转 */ |
可组合使用:transform: rotate(45deg) scale(1.2);
3D 变换:rotateX(), rotateY(), translateZ(), scaleZ() 等。
42. CSS 变量(自定义属性)
定义可复用的值。
1 | :root { |
可设置回退值:var(--color, blue)。
43. CSS 函数
calc():计算值,支持+ - * /。1
width: calc(100% - 80px);
var():引用 CSS 变量。rgb()/rgba()/hsl()/hsla()url():引入资源。attr():获取 HTML 属性值(用于 content)。min()/max()/clamp():比较值。1
2width: min(100px, 50%);
font-size: clamp(1rem, 2.5vw, 2rem);
44. CSS 单位
- 绝对单位:
px(像素),pt(点),cm,mm等。 - 相对单位:
%:相对于父元素。em:相对于当前元素的字体大小。rem:相对于根元素(<html>)字体大小。vw/vh:视口宽度的 1% / 高度的 1%。vmin/vmax:视口较小/较大边的 1%。ch:数字“0”的宽度。ex:当前字体 x-height。
45. CSS 特异性(Specificity)
当多个规则冲突时,选择器的特异性决定哪个规则生效。
特异性值计算(四位数,从左到右重要性递减):
- 内联样式:1,0,0,0
- ID 选择器:0,1,0,0
- 类、伪类、属性选择器:0,0,1,0
- 元素、伪元素:0,0,0,1
- 通配符、组合器:无贡献
1 | /* 0,0,1,0 */ |
46. 浏览器支持前缀
为确保兼容性,有时需要添加厂商前缀:
-webkit-:Chrome, Safari, Edge-moz-:Firefox-ms-:Internet Explorer-o-:Opera
示例:
1 | .my-element { |
现在许多属性已无需前缀,可使用 caniuse 查询。
总结
本教程涵盖了 CSS 中最常用的属性和概念。学习 CSS 需要多实践,结合 HTML 编写样式,并利用浏览器开发者工具调试。掌握 Flexbox 和 Grid 可应对大部分布局需求,媒体查询实现响应式,动画和过渡增强交互体验。继续深入学习可参考 MDN 文档。