什么是 global.css?
global.css(或 reset.css, base.css, normalize.css)是 Web 项目中的全局样式表,它的核心作用是为整个网站或应用提供一个统一、可预测的基础样式层,它不包含特定于某个页面的样式,而是定义了所有 HTML 元素在所有浏览器中的默认表现。

global.css 的目标是:
- 重置默认样式:消除不同浏览器(如 Chrome, Firefox, Safari, Edge)对 HTML 元素(如
<h1>,<p>,<ul>,<a>等)的默认渲染差异,实现跨浏览器的一致性。 - 定义基础变量:设置网站的全局设计系统,如颜色、字体、间距等,方便在整个项目中复用。
- 设置通用布局规则:定义盒模型、滚动行为等全局性布局规则。
- 提升可维护性:将通用样式集中管理,避免在各个组件中重复编写相同的代码。
global.css 最佳实践
在编写 global.css 之前,了解一些最佳实践至关重要:
- 使用 CSS 预处理器:强烈推荐使用 Sass/Less 等预处理器,它们提供了变量、嵌套、混合(Mixins)等功能,能极大地提升样式表的组织性和可维护性,本模板将以 Sass (SCSS) 语法为例。
- 采用 BEM 命名规范:虽然
global.css本身不包含复杂组件,但它定义的类名可能会被组件继承,使用 BEM(Block, Element, Modifier)等命名约定可以避免样式冲突,使 CSS 结构更清晰。 - 模块化思维:即使是全局样式,也可以尝试模块化组织,将颜色、字体、布局等分别放在不同的文件中,最后通过
@import合并到一个global.css文件中。 - 避免过度重置:不要把所有元素的
margin和padding都设为 0,使用像normalize.css这样的现代重置方案,它在移除默认样式的同事,会保留有用的默认值(如<input>和<button>的基本样式)。 - 使用 CSS 自定义属性:CSS 变量是实现设计系统现代化的最佳方式,它们允许你定义一次值,然后在任何地方引用,并且可以在 JavaScript 中动态修改。
global.css 公共样式模板 (SCSS 版本)
这是一个功能全面、注释清晰的 global.scss 模板,你可以根据自己项目的需求进行修改和删减。
// ==========================================================================
// 1. 全局变量与配置
// ==========================================================================
// 在这里定义整个项目的设计系统变量,方便全局统一管理和修改。
// 颜色系统
:root {
// 主色调
--color-primary: #007bff;
--color-primary-light: #5a9fd4;
--color-primary-dark: #0056b3;
// 中性色
--color-text-primary: #333;
--color-text-secondary: #666;
--color-text-light: #999;
--color-bg-primary: #ffffff;
--color-bg-secondary: #f8f9fa;
--color-bg-tertiary: #e9ecef;
--color-border: #dee2e6;
// 状态色
--color-success: #28a745;
--color-warning: #ffc107;
--color-danger: #dc3545;
--color-info: #17a2b8;
}
// 字体系统
:root {
--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
--font-size-base: 16px; // 基准字号
--line-height-base: 1.5;
}
// 间距系统
:root {
--spacing-xs: 0.25rem; // 4px
--spacing-sm: 0.5rem; // 8px
--spacing-md: 1rem; // 16px
--spacing-lg: 1.5rem; // 24px
--spacing-xl: 2rem; // 32px
--spacing-xxl: 3rem; // 48px
}
// 布局与断点
:root {
--container-max-width: 1200px;
--border-radius: 0.375rem; // 6px
--box-shadow-sm: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
--box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
--transition-base: all 0.3s ease-in-out;
}
// ==========================================================================
// 2. 基础重置与标准化
// ==========================================================================
// 基于 Eric Meyer's Reset 和 Normalize.css 的思想,提供一个干净、一致的起点。
// 移除所有元素的内外边距
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
// 设置 HTML 和 Body 的基础样式
html {
// 禁用 iOS 上的文本大小调整,确保 1rem = 16px
-webkit-text-size-adjust: 100%;
// 确保页面始终从顶部开始渲染
scroll-behavior: smooth;
}
body {
font-family: var(--font-family-sans);
font-size: var(--font-size-base);
line-height: var(--line-height-base);
color: var(--color-text-primary);
background-color: var(--color-bg-primary);
-webkit-font-smoothing: antialiased; // Mac OS 字体平滑
-moz-osx-font-smoothing: grayscale; // Linux 字体平滑
}
// ==========================================================================
// 3. 链接样式
// ==========================================================================
a {
color: var(--color-primary);
text-decoration: none;
transition: var(--transition-base);
&:hover,
&:focus {
color: var(--color-primary-dark);
text-decoration: underline;
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
&:focus-visible {
// 使用 :focus-visible 替代 :focus,避免鼠标点击时出现轮廓
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
}
// ==========================================================================
// 4. 标题与文本格式
// ==========================================================================和段落的样式,移除浏览器默认样式。
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
line-height: 1.2;
margin-bottom: var(--spacing-md);
color: var(--color-text-primary);
}
h1 { font-size: 2.5rem; } /* 40px */
h2 { font-size: 2rem; } /* 32px */
h3 { font-size: 1.75rem; } /* 28px */
h4 { font-size: 1.5rem; } /* 24px */
h5 { font-size: 1.25rem; } /* 20px */
h6 { font-size: 1rem; } /* 16px */
p {
margin-bottom: var(--spacing-md);
}
// 强调文本
strong, b {
font-weight: 600;
}
em, i {
font-style: italic;
}
// ==========================================================================
// 5. 列表样式
// ==========================================================================
ul, ol {
margin-bottom: var(--spacing-md);
padding-left: var(--spacing-lg); // 为列表项提供缩进
}
li {
margin-bottom: var(--spacing-xs);
}
// ==========================================================================
// 6. 表单元素
// ==========================================================================
// 统一表单元素的视觉表现。
input,
textarea,
select {
width: 100%;
padding: var(--spacing-sm) var(--spacing-md);
font-family: inherit;
font-size: 1rem;
line-height: inherit;
color: inherit;
background-color: var(--color-bg-secondary);
border: 1px solid var(--color-border);
border-radius: var(--border-radius);
transition: var(--transition-base);
&:focus {
border-color: var(--color-primary);
outline: none;
box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}
&:disabled {
background-color: var(--color-bg-tertiary);
cursor: not-allowed;
opacity: 0.7;
}
}
button {
cursor: pointer;
border: none;
font-family: inherit;
font-size: 1rem;
font-weight: 500;
line-height: inherit;
padding: var(--spacing-sm) var(--spacing-md);
border-radius: var(--border-radius);
transition: var(--transition-base);
&:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}
&:disabled {
cursor: not-allowed;
opacity: 0.7;
}
}
// ==========================================================================
// 7. 通用工具类
// ==========================================================================
// 提供一些常用的、无语义的工具类,快速实现特定效果。
// 文本对齐
.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }
// 文本颜色
.text-primary { color: var(--color-text-primary); }
.text-secondary { color: var(--color-text-secondary); }
.text-light { color: var(--color-text-light); }
// 背景颜色
.bg-primary { background-color: var(--color-bg-primary); }
.bg-secondary { background-color: var(--color-bg-secondary); }
.bg-tertiary { background-color: var(--color-bg-tertiary); }
// 间距工具类
.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }
.p-0 { padding: 0; }
.pt-0 { padding-top: 0; }
.pb-0 { padding-bottom: 0; }
// 可以根据需要继续添加更多工具类...
// ==========================================================================
// 8. 辅助功能
// ==========================================================================对辅助技术(如屏幕阅读器)是可访问的。
// 隐藏元素,但保留屏幕阅读器可读性
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
// ==========================================================================
// 9. 清除浮动
// ==========================================================================
// 当需要清除内部浮动时使用。
.clearfix::after {
content: "";
display: table;
clear: both;
}
模板详解
全局变量与配置 (root)
这是整个样式表的“大脑”,所有颜色、字体、间距等都在这里定义。

- 好处:如果你想更换主题色,只需修改
--color-primary的值,所有使用该变量的地方都会自动更新。 var()函数:用于使用这些变量,如color: var(--color-primary);。
基础重置与标准化
box-sizing: border-box;:这是现代 Web 开发的基石,它将元素的padding和border计算进width和height内,使得布局更加直观和可预测。scroll-behavior: smooth;:为页面内锚点跳转添加平滑滚动效果。-webkit-font-smoothing和-moz-osx-font-smoothing:用于提升字体在不同操作系统上的渲染清晰度。
链接样式
定义了链接的默认、悬停、焦点状态。focus-visible 是一个重要的伪类,它只在键盘导航时触发焦点样式,改善了可访问性。
标题与文本格式
移除了浏览器默认的标题和段落间距,使用统一的变量(如 var(--spacing-md))来管理间距,保证了视觉节奏的一致性。
列表与表单元素
重置了 <ul>, <ol>, <li> 的默认样式,并对 <input>, <textarea>, <select>, <button> 进行了美化,统一了它们的边框、内边距、焦点状态等,使表单看起来更整洁、更易用。
通用工具类
这是 global.css 中非常实用的一部分,它提供了一些简单的、可复用的类,让你无需编写额外的 CSS 即可实现特定效果。

- 给一个
<div>添加class="text-center",就能快速实现居中对齐。 - 这类类名通常非常短(如
m-0代表margin: 0),在大型项目中可以极大提高开发效率。
辅助功能
.sr-only(Screen Reader Only):这是一个非常重要的可访问性类,它将元素从视觉上隐藏(position: absolute和overflow: hidden),但屏幕阅读器仍然可以读取其内容,适用于那些对视觉用户无用但对屏幕阅读器用户重要的信息(如“当前页面:首页”)。
清除浮动
.clearfix 是一个经典的解决方案,用于清除其内部浮动元素带来的布局影响,在现代 CSS 中,更推荐使用 Flexbox 或 Grid 布局来避免浮动,但在处理遗留代码或特定场景时,它依然很有用。
如何使用这个模板?
-
创建项目结构:
/src /styles _variables.scss // 变量文件 _reset.scss // 重置样式 _typography.scss // 文本样式 _forms.scss // 表单样式 _tools.scss // 工具类 global.scss // 主入口文件,通过 @import 引入其他文件 /... -
编写
global.scss:// src/styles/global.scss // 1. 导入变量文件 @import './variables'; // 2. 导入各个模块文件 @import './reset'; @import './typography'; @import './forms'; @import './tools'; // ...其他模块
-
在 HTML 中引入: 在你的主 HTML 文件(如
index.html)的<head>标签内引入编译后的 CSS 文件。<link rel="stylesheet" href="dist/css/global.css">
如果你使用构建工具(如 Vite, Webpack),可以直接引入
.scss文件,构建工具会自动处理。
一个设计良好的 global.css 是构建可维护、可扩展、风格统一的 Web 项目的基石,它不仅解决了浏览器兼容性问题,更重要的是,它将设计系统代码化,为整个项目提供了稳定的基础,希望这个模板和介绍能帮助你更好地管理你的项目样式。
