跳到主要内容

CSS 简介

CSS(层叠样式表)是用于控制网页外观和布局的语言。本教程将带你从零开始学习 CSS。

什么是 CSS?

CSS 的作用

CSS(Cascading Style Sheets,层叠样式表)用于描述 HTML 文档的外观和格式:

  • 颜色和背景:设置文字颜色、背景色、渐变等
  • 字体和排版:控制字体、大小、行高、对齐方式
  • 布局:控制元素的位置和排列方式
  • 动画和过渡:创建动态效果

CSS 的特点

特点说明
层叠性多个样式规则可以作用于同一个元素
继承性子元素可以继承父元素的某些样式
优先级不同来源的样式有优先级顺序
模块化分为多个模块,如盒模型、Flexbox、Grid等

CSS 语法

基本结构

/* 选择器 */
h1 {
/* 属性: 值; */
color: blue;
font-size: 24px;
}

各部分说明:

h1 { color: blue; }
│ │ │
│ │ └── 值 (value)
│ └───────┘
│ │
│ └── 属性值对
└───────────
选择器 (selector)

CSS 注释

/* 这是单行注释 */

/*
* 这是多行注释
* 用于详细说明样式规则
*/

/* 不要使用 HTML 风格的注释 */
/* <!-- 这不是正确的CSS注释 --> */

CSS 引入方式

1. 外部样式表(推荐)

将 CSS 写入单独的 .css 文件,通过 <link> 引入:

<!-- 在 HTML 的 <head> 中引入 -->
<head>
<link rel="stylesheet" href="styles.css">
</head>

styles.css:

h1 {
color: blue;
font-size: 24px;
}
优点
  • 样式与结构分离
  • 多个页面共享同一样式文件
  • 浏览器可以缓存 CSS 文件,提高加载速度

2. 内部样式表

将 CSS 写在 HTML 文件的 <style> 标签内:

<head>
<style>
h1 {
color: blue;
}
p {
font-size: 16px;
}
</style>
</head>
适用场景
  • 单页面网站
  • 需要针对特定页面添加特殊样式

3. 内联样式(慎用)

直接在 HTML 元素的 style 属性中编写:

<h1 style="color: blue; font-size: 24px;">标题</h1>
<p style="font-size: 16px; color: #333;">段落内容</p>
缺点
  • 样式与 HTML 混合,难以维护
  • 无法复用样式
  • 优先级最高,难以覆盖
  • 避免使用!

样式优先级

来源优先级(从低到高)
浏览器默认样式最低
外部样式表 / 内部样式表
内联样式最高

CSS 选择器

选择器用于指定要样式化的 HTML 元素:

元素选择器

/* 选择所有段落元素 */
p {
color: #333;
}

/* 选择所有标题 */
h1, h2, h3 {
color: #2c3e50;
}

类选择器

/* HTML 中定义 class="highlight" */
.highlight {
background-color: yellow;
}

/* 元素+类选择器 */
p.highlight {
font-weight: bold;
}

ID 选择器

/* HTML 中定义 id="header" */
#header {
background-color: #3498db;
padding: 20px;
}
注意
  • ID 在页面中应该是唯一的
  • 类选择器比 ID 选择器更灵活,推荐使用类

后代选择器

/* 选择 article 内的所有段落 */
article p {
line-height: 1.6;
}

/* 选择 div 内的所有 strong */
div strong {
color: red;
}

子选择器

/* 只选择直接子元素 */
ul > li {
list-style: none;
}

/* div 的直接子元素 p */
div > p {
margin: 10px 0;
}

伪类选择器

/* 鼠标悬停 */
a:hover {
color: #e74c3c;
}

/* 第一个子元素 */
li:first-child {
border-top: none;
}

/* 获取焦点的输入框 */
input:focus {
border-color: #3498db;
}

完整选择器列表

选择器示例说明
元素p所有 <p> 元素
.highlight所有 class="highlight"
ID#headerid="header" 的元素
后代article particle 内的 p
ul > liul 的直接 li 子元素
相邻兄弟h1 + ph1 后的第一个 p
属性input[type="text"]指定属性的元素
伪类:hover元素状态
伪元素::before元素特定部分

CSS 属性

常用属性示例

/* 文字颜色 */
color: #333333;
color: rgb(0, 0, 0);
color: red;

/* 字体大小 */
font-size: 16px;
font-size: 1.2em;

/* 背景 */
background-color: #f5f5f5;
background-image: url('bg.jpg');
background: linear-gradient(to bottom, #fff, #000);

/* 边框 */
border: 1px solid #333;
border-radius: 5px;

/* 外边距 */
margin: 10px;
margin-top: 20px;

/* 内边距 */
padding: 15px;
padding-left: 20px;

/* 宽度和高度 */
width: 100%;
height: 200px;
max-width: 1200px;

CSS 值和单位

长度单位

单位说明示例
px像素(绝对)font-size: 16px;
%百分比(相对于父元素)width: 50%;
em相对于当前字体大小font-size: 1.5em;
rem相对于根元素字体大小font-size: 1rem;
vw视口宽度的1%width: 50vw;
vh视口高度的1%height: 100vh;
/* 绝对单位 */
font-size: 16px;
border-width: 2px;

/* 相对单位 - 推荐用于响应式设计 */
width: 50%;
font-size: 1.5em;
padding: 2rem;

颜色值

/* 颜色名称 */
color: red;
color: blue;

/* 十六进制 */
color: #ff0000;
color: #f00; /* 简写 */

/* RGB */
color: rgb(255, 0, 0);

/* RGBA(带透明度) */
color: rgba(255, 0, 0, 0.5);

/* HSL */
color: hsl(0, 100%, 50%);

CSS 变量

/* 定义变量 */
:root {
--primary-color: #3498db;
--font-size-base: 16px;
--spacing: 10px;
}

/* 使用变量 */
.button {
background-color: var(--primary-color);
font-size: var(--font-size-base);
padding: var(--spacing);
}

/* 带默认值的变量 */
.content {
color: var(--text-color, #333); /* 默认值 */
}

第一个 CSS 示例

HTML 结构

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 入门</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="site-header">
<h1>我的网站</h1>
<nav>
<a href="#">首页</a>
<a href="#">教程</a>
<a href="#">关于</a>
</nav>
</header>

<main>
<article>
<h2>欢迎学习 CSS</h2>
<p class="intro">CSS 用于控制网页的样式和布局。</p>
<p>通过 CSS,我们可以让网页变得更加美观。</p>
</article>
</main>

<footer>
<p>&copy; 2024 我的网站</p>
</footer>
</body>
</html>

CSS 样式

/* style.css */

/* 重置默认样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

/* 基本样式 */
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
background-color: #f9f9f9;
}

/* 头部样式 */
.site-header {
background-color: #2c3e50;
color: white;
padding: 20px;
}

.site-header h1 {
margin-bottom: 10px;
}

/* 导航样式 */
nav a {
color: white;
text-decoration: none;
margin-right: 15px;
}

nav a:hover {
text-decoration: underline;
}

/* 主内容区 */
main {
max-width: 800px;
margin: 30px auto;
padding: 0 20px;
}

article h2 {
color: #2c3e50;
margin-bottom: 15px;
}

.intro {
font-size: 18px;
color: #555;
}

/* 底部样式 */
footer {
background-color: #34495e;
color: white;
text-align: center;
padding: 20px;
margin-top: 50px;
}

效果预览: 此示例展示了一个完整的网页布局,包含头部导航、内容区和底部。

<!-- 结构示例 -->
<header>
<h1>我的网站</h1>
<nav>
<a href="#">首页</a>
<a href="#">教程</a>
<a href="#">关于</a>
</nav>
</header>
<main>
<h2>欢迎学习 CSS</h2>
<p class="intro">CSS 用于控制网页的样式和布局。</p>
<p>通过 CSS,我们可以让网页变得更加美观。</p>
</main>
<footer>
<p>&copy; 2024 我的网站</p>
</footer>

结合上述 CSS 样式,最终效果为一个带有深色头部、白色内容区和深色底部的现代网页布局。

浏览器开发者工具

浏览器开发者工具是学习和调试 CSS 的利器:

打开方式

  • Chrome/Edge:按 F12Ctrl+Shift+I
  • Firefox:按 F12Ctrl+Shift+I
  • SafariCmd+Option+I

常用功能

  1. Elements 面板:查看和编辑 HTML 和 CSS
  2. Styles 面板:查看计算后的样式
  3. Computed 面板:查看盒模型的精确值
  4. 选择器测试:点击元素快速定位
调试技巧
  • 使用开发者工具实时修改 CSS,即时预览效果
  • 查看元素的 computed styles 了解最终应用的样式
  • 使用 :hov 强制显示伪类状态(如 hover)

小结

本章学习了:

  1. CSS 基础:什么是 CSS 以及它的作用
  2. 语法结构:选择器、属性、值的写法
  3. 引入方式:外部样式表、内部样式表、内联样式
  4. 选择器:元素、类、ID、后代、伪类选择器
  5. 单位和值:长度单位、颜色值、CSS 变量
  6. 开发工具:浏览器开发者工具的使用

练习

  1. 创建第一个 CSS 文件,设置页面基本样式
  2. 尝试使用不同的选择器选择元素
  3. 使用浏览器开发者工具检查和修改样式
  4. 定义 CSS 变量并在多个地方使用
  5. 创建一个简单的博客页面布局样式