六维教程

Astro 全局样式

什么时候需要全局样式

局部样式适合组件内部,但有些东西天然属于全站,比如:

  • 字体、配色变量
  • 重置浏览器默认样式
  • 标题、正文的基础排版
  • 第三方 UI 库的基础样式

这些用全局样式统一管理更合适。

组织全局样式

在布局里引入全局 CSS

最常见的做法是建一个 global.css,然后在布局组件(Astro 布局)中引入,由于布局被所有页面复用,全局样式自然覆盖全站。

/* src/styles/global.css */
:root {
  --brand: #7c3aed;
  --text: #1f2937;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  color: var(--text);
  font-family: system-ui, sans-serif;
}

布局中引入:

---
// src/layouts/BaseLayout.astro
import '../styles/global.css';
const { title } = Astro.props; // 接收调用方传入的页面标题
---
<html lang="zh-CN">
  <head><title>{title}</title></head>
  <body><slot /></body>
</html>

用 :root 定义设计变量

把颜色、间距、字号定义成 CSS 变量,组件里随时取用,改主题只改一处。

:root {
  --space: 1rem;
  --radius: 8px;
}

组件局部样式也能使用:

<style>
  .box {
    padding: var(--space);
    border-radius: var(--radius);
  }
</style>

重置样式

不同浏览器对默认样式处理不同,建议加一段轻量重置。

* { margin: 0; padding: 0; box-sizing: border-box; } /* 清除默认外边距,统一盒模型 */
img { max-width: 100%; display: block; } /* 图片不溢出,按块级显示 */
a { color: inherit; text-decoration: none; } /* 链接颜色继承文字,去掉下划线 */

全局 vs 局部怎么选

一个简单判断标准:这段样式只服务一个组件吗?是就用局部;会影响多个页面甚至整个站点就用全局。

初期可以在布局里放全局基础排版,业务细节交给组件局部样式。

上一篇
Astro 局部样式
下一篇
Astro 布局