CSS基础

掌握CSS的基本概念和语法

什么是CSS?

CSS(层叠样式表)是一种样式表语言,用于描述HTML或XML文档的呈现方式。CSS定义了如何显示文档中的元素,包括布局、颜色、字体等视觉样式。

CSS的历史与发展

CSS由W3C(万维网联盟)制定和维护,经历了多个版本的发展:

  • CSS1 (1996):第一个正式规范,包含字体、颜色、边距等基本属性
  • CSS2 (1998):增加定位、媒体类型等高级功能
  • CSS2.1 (2011):修复CSS2中的问题,成为最广泛支持的版本
  • CSS3 (1999至今):模块化规范,引入众多新特性
提示: CSS与HTML分离是Web标准的重要原则,这使得内容与表现分离,提高了网站的可维护性。

CSS的引入方式

有三种主要方式将CSS应用到HTML文档中:

1. 内联样式

直接在HTML元素的style属性中定义样式:

HTML
<p style="color: blue; font-size: 16px;">这是一个蓝色的段落</p>
注意: 内联样式会覆盖外部和内部样式表,但不利于维护和复用,应谨慎使用。

2. 内部样式表

在HTML文档的<head>部分使用<style>标签定义样式:

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

3. 外部样式表

将CSS代码保存在单独的文件中,然后在HTML中通过<link>标签引入:

HTML
<head>
    <link rel="stylesheet" href="styles.css">
</head>
styles.css
p {
    color: blue;
    font-size: 16px;
}

4. @import规则

使用@import规则在CSS文件中导入其他样式表:

CSS
@import url("reset.css");
@import url("typography.css");

body {
    background-color: #f5f5f5;
}
最佳实践: 对于大型项目,推荐使用外部样式表,因为它可以实现样式复用、缓存和更好的维护性。

CSS基本语法

CSS规则由选择器和声明块组成:

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

示例

CSS
h1 {
    color: red;
    text-align: center;
}

这是一个居中的红色标题

CSS规则集详解

  • 选择器:指定要应用样式的HTML元素
  • 声明块:包含一个或多个声明,用花括号{}包围
  • 声明:由属性和值组成,以分号;结尾
  • 属性:要设置的样式属性(如color、font-size)
  • :属性的具体设置(如red、16px)

CSS注释

注释用于解释代码,不会被浏览器执行:

CSS
/* 这是一个单行注释 */

/*
这是一个
多行注释
*/

p {
    color: blue; /* 设置段落文字颜色为蓝色 */
}
提示: 良好的注释习惯可以提高代码的可读性和维护性,特别是在团队协作中。

CSS层叠与优先级

当多个CSS规则应用于同一个元素时,浏览器会根据以下优先级顺序确定最终样式:

  1. !important 声明 - 最高优先级
  2. 内联样式(style属性)
  3. ID选择器
  4. 类选择器、属性选择器、伪类
  5. 元素选择器、伪元素
  6. 通用选择器
  7. 继承的样式 - 最低优先级

特异性计算

CSS使用特异性(specificity)值来确定规则的优先级,特异性值由四部分组成:

  • 内联样式:特异性值为 1,0,0,0
  • ID选择器:每个ID选择器增加 0,1,0,0
  • 类选择器、属性选择器、伪类:每个增加 0,0,1,0
  • 元素选择器、伪元素:每个增加 0,0,0,1
特异性计算示例
/* 特异性: 0,0,0,1 */
p { color: black; }

/* 特异性: 0,0,1,0 */
.intro { color: blue; }

/* 特异性: 0,0,1,1 */
p.intro { color: green; }

/* 特异性: 0,1,0,0 */
#header { color: red; }
提示: 尽量避免使用!important,因为它会破坏CSS的自然层叠规则,使代码难以维护。

CSS值和单位

CSS支持多种值和单位,用于定义样式属性的具体值:

长度单位

单位 描述 示例
px 像素 font-size: 16px;
em 相对于父元素的字体大小 font-size: 1.2em;
rem 相对于根元素的字体大小 font-size: 1.5rem;
% 百分比 width: 50%;
vw/vh 视口宽度/高度的百分比 width: 50vw;

颜色值

表示法 描述 示例
颜色名称 预定义的颜色名称 color: red;
十六进制 #RRGGBB 或 #RGB color: #ff0000;
RGB rgb(红, 绿, 蓝) color: rgb(255, 0, 0);
RGBA 带透明度的RGB color: rgba(255, 0, 0, 0.5);
HSL hsl(色相, 饱和度, 亮度) color: hsl(0, 100%, 50%);

CSS继承

某些CSS属性可以从父元素继承到子元素:

可继承的属性

  • 字体相关:font-family, font-size, font-weight, font-style
  • 文本相关:color, text-align, text-indent, line-height
  • 列表相关:list-style-type, list-style-position
  • 表格相关:border-collapse, border-spacing

不可继承的属性

  • 布局相关:width, height, margin, padding
  • 背景相关:background-color, background-image
  • 定位相关:position, top, left, z-index
  • 边框相关:border, border-radius
继承示例
<div style="color: blue; font-size: 16px;">
    <p>这段文字将继承父元素的蓝色和16px字体大小</p>
    <p style="color: red;">这段文字将覆盖继承的蓝色,变为红色</p>
</div>