← 返回首页

☰ CSS 入门教程

CSS(Cascading Style Sheets,层叠样式表)赋予网页视觉与布局。本教程系统讲解 CSS 从基础到进阶的所有核心知识。

一、CSS 入门:引入方式与基础语法

1.1 CSS 的三种引入方式

<!-- 方式一:内联样式(直接写在标签上,优先级最高) -->
<p style="color: red; font-size: 20px;">红色文字</p>

<!-- 方式二:内部样式(写在 <style> 标签中) -->
<style>
  p { color: blue; }
</style>

<!-- 方式三:外部样式表(推荐!写在独立的 .css 文件中) -->
<link rel="stylesheet" href="style.css">
💡 推荐使用外部样式表,它实现了样式与结构的分离,便于维护、复用和浏览器缓存。

1.2 基础语法

/* 语法:选择器 { 属性名: 属性值; } */
/* 一个选择器可包含多个声明 */

h1 {
  color: #333;           /* 文字颜色 */
  font-size: 28px;       /* 文字大小 */
  text-align: center;    /* 居中对齐 */
  margin-bottom: 16px;   /* 下外边距 */
}

二、选择器大全

选择器是 CSS 的核心,决定了样式应用到哪些元素上。

2.1 基础选择器

选择器语法说明示例
通配符*选中所有元素* { margin: 0; }
元素element按标签名匹配p { }
.class按 class 属性匹配(最常用).btn { }
ID#id按 id 匹配(唯一性,不建议多用)#header { }
群组a, b同时匹配多个选择器h1, h2, h3 { }

2.2 组合选择器

名称语法说明
后代A BA 内部的所有 B(不限层级)
子代A > BA 的直接子元素 B
相邻兄弟A + B紧跟在 A 之后的第一个 B
通用兄弟A ~ BA 之后的所有同级 B

2.3 属性选择器

[type="text"]        /* 精确匹配 */          
[class^="btn-"]      /* 以 btn- 开头 */
[href$=".pdf"]       /* 以 .pdf 结尾 */
[class*="active"]    /* 包含 active */
[data-size~="large"] /* 包含独立单词 large */

2.4 伪类选择器(状态)

伪类触发条件
:hover鼠标悬停
:focus获得焦点(输入框等)
:active被点击时
:visited已访问的链接
:first-child父元素的首个子元素
:last-child父元素的末尾子元素
:nth-child(n)父元素中第 n 个子元素
:nth-child(odd)奇数行(斑马条纹)
:nth-child(even)偶数行
:not(selector)排除匹配的元素

2.5 伪元素选择器(创建虚拟元素)

/* ::before 和 ::after 必须配合 content 属性使用 */
.quote::before {
  content: "「";    /* 在内容前插入 */
}
.quote::after {
  content: "」";    /* 在内容后插入 */
}

::selection {         /* 用户选中文字时的样式 */
  background: #7c3aed;
  color: #fff;
}

::placeholder {       /* 输入框占位文字样式 */
  color: #999;
}

2.6 层叠优先级(Specificity)

当多条规则冲突时,浏览器按以下优先级决定最终样式:

  1. !important — 最高优先级(谨慎使用)
  2. 内联样式(style 属性)— 权重 1000
  3. ID 选择器 — 权重 100
  4. 类 / 属性 / 伪类 — 权重 10
  5. 元素 / 伪元素 — 权重 1

三、颜色与背景

3.1 颜色表示方法

color: red;                     /* 颜色关键字 */
color: #7c3aed;                 /* 十六进制(最常用) */
color: rgb(124, 58, 237);       /* RGB */
color: rgba(124, 58, 237, .8);  /* RGBA(含透明度) */
color: hsl(263, 85%, 58%);      /* 色相-饱和度-明度 */

3.2 背景属性

.hero {
  background-color: #f5f3ff;
  background-image: url(bg.jpg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;

  /* 简写形式(推荐) */
  background: #f5f3ff url(bg.jpg) center/cover no-repeat;
}

/* 渐变背景 */
.gradient {
  background: linear-gradient(135deg, #7c3aed, #a78bfa);
}
/* 径向渐变 */
.radial {
  background: radial-gradient(circle, #fff 0%, #7c3aed 100%);
}

四、文本与字体样式

.text-example {
  /* 字体 */
  font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  font-size: 16px;
  font-weight: 700;
  font-style: italic;
  line-height: 1.8;

  /* 文本 */
  color: #333;
  text-align: center;
  text-decoration: underline;
  text-transform: uppercase;
  letter-spacing: 2px;
  word-spacing: 4px;
  text-indent: 2em;

  /* 文本溢出处理 */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 多行文本截断 */
.multiline-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

五、盒子模型(Box Model)

每个 HTML 元素都是一个矩形盒子,由内容 → 内边距 → 边框 → 外边距四层组成。

.box {
  /* 尺寸 */
  width: 300px;
  height: 200px;

  /* 内边距 */
  padding: 20px;
  padding: 10px 20px;

  /* 边框 */
  border: 2px solid #ccc;
  border-radius: 12px;

  /* 外边距 */
  margin: 20px auto;        /* auto 实现水平居中 */
}

5.1 box-sizing(重要!)

默认 content-box 下,width 只包含内容区,加上 padding 和 border 后实际尺寸会变大。强烈建议全局设置:

*, *::before, *::after {
  box-sizing: border-box;  /* width 包含 padding 和 border */
}

六、Display 与定位

6.1 display 常用值

行为对照
block独占一行,可设宽高div, p, h1
inline不换行,宽高无效span, a
inline-block不换行,但可设宽高button, input
none隐藏元素(不占空间)
flex弹性布局容器
grid网格布局容器

6.2 position 定位方案

.relative {
  position: relative;
  top: 10px; left: 20px;
}
.absolute {
  position: absolute;
  top: 0; right: 0;
}
.fixed-btn {
  position: fixed;
  bottom: 20px; right: 20px;
  z-index: 999;
}
.sticky-header {
  position: sticky;
  top: 0; z-index: 100;
}

七、Flexbox 弹性布局

.flex-container {
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
  flex-wrap: nowrap | wrap | wrap-reverse;
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
  align-items: stretch | flex-start | flex-end | center | baseline;
  align-content: stretch | flex-start | flex-end | center | space-between | space-around;
  gap: 16px;
}

.flex-item {
  flex: 1;                      /* 平分空间 */
  flex: 0 0 200px;              /* 固定宽度 */
  align-self: auto | flex-start | flex-end | center | stretch;
  order: 0;
}

/* 经典居中方案 */
.parent {
  display: flex;
  justify-content: center;      /* 水平居中 */
  align-items: center;          /* 垂直居中 */
}

八、Grid 网格布局

.grid-container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;  
  gap: 16px;
  height: 100vh;
}

/* 圣杯布局 */
.page-layout {
  display: grid;
  grid-template-areas:
    "header  header"
    "sidebar main  "
    "footer  footer";
  grid-template-columns: 250px 1fr;
  grid-template-rows: 60px 1fr 60px;
  min-height: 100vh;
}

/* 自动填充响应式 */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
}

九、CSS 变量(自定义属性)

:root {
  --primary: #7c3aed;
  --text: #1f2937;
  --radius: 12px;
  --shadow: 0 2px 8px rgba(0,0,0,.1);
}

.button {
  background: var(--primary);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

/* 带备用值 */
color: var(--text, #333);

十、过渡与动画

.btn {
  transition: all 0.3s ease;
}
.btn:hover {
  transform: translateY(-2px);
}

/* 关键帧动画 */
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.element {
  animation: fadeIn 0.5s ease forwards;
}

十一、响应式设计

/* 桌面优先(默认大屏样式,向下适配) */
@media (max-width: 1024px) {
  .container { padding: 16px; }
}

@media (max-width: 640px) {
  .container { padding: 12px; }
  .card-grid { grid-template-columns: 1fr; }
}

/* 响应式字体 */
h1 { font-size: clamp(24px, 5vw, 48px); }

/* 响应式容器 */
.container {
  width: min(100% - 32px, 1200px);
  margin-inline: auto;
}

常见断点参考

设备宽度范围推荐断点
手机(竖屏)320px - 480px480px
手机(横屏)480px - 768px768px
平板768px - 1024px1024px
笔记本1024px - 1440px1280px
台式机1440px+1440px

十二、其他实用技巧

/* 禁用用户选中文字 */
.no-select { user-select: none; }

/* 平滑滚动 */
html { scroll-behavior: smooth; }

/* 视觉隐藏但保留占位 */
.invisible { visibility: hidden; }

十三、CSS 最佳实践总结

  1. 全局设置 box-sizing: border-box — 避免尺寸计算陷阱
  2. 使用 CSS 变量 — 统一的色彩、间距和主题管理
  3. 移动优先 — 先写移动端样式,再用 min-width 向上扩展
  4. 善用 Flex 和 Grid — 告别 float 和复杂的定位 hack
  5. 用 gap 替代 margin — Flex/Grid 中子元素的间距,更简洁
  6. 避免深层嵌套选择器 — 最多 3 层,降低耦合度
  7. 合理使用 BEM 命名法.block__element--modifier 让类名表意清晰
  8. 利用浏览器 DevTools — 实时调试样式,快速定位布局问题
  9. CSS 也应该语义化 — 类名描述组件而非外观
  10. 善用 MDN 文档MDN CSS 参考 是最权威的查询手册
🎉 恭喜你完成了 CSS 完整教程!配合 HTML 教程的知识,你已经具备了独立制作精美网页的能力。坚持练习,多看优秀网站的源码,你一定会越写越好!