Alert 提示组件:五种类型与插槽定制

介绍 Alert 组件的设计思路——五种语义类型、卡片与扁平两种风格、自定义图标颜色,以及标题插槽与默认插槽的灵活组合。

2026年6月19日
推荐阅读 4 分钟
933 字
浏览量
观众数

为什么需要 Alert

在技术博客文章中,经常需要突出显示一些非正文的信息——注意事项、问题提示、警告、错误等。如果只用普通的文字或引用块,读者很难一眼区分信息的重要程度。

Alert 组件就是为这个场景设计的。它提供五种语义类型,每种类型有独立的颜色、图标和默认标题,同时支持卡片和扁平两种视觉风格。

五种类型

Alert 内置了五种类型,通过 type 属性切换:

提醒
这是默认的 提醒 类型,适用于一般性注意事项和建议。
问题

问题 类型适合标注需要读者思考的内容,或者提出一个待解决的疑问。默认插槽中可以包含 超链接 粗体InLine code

自定义标题

信息 类型使用中性灰色,适合补充说明或背景知识。这里通过 title 属性自定义了标题文字。

警告

警告 类型搭配卡片风格(card={true} ),顶部有橙色渐变光晕。适合标注可能导致问题的操作或需要注意的风险。默认插槽的 超链接 粗体 InLine code 都会继承警告色。

错误

错误 类型用于标注严重问题,如已知的 Bug、不兼容的配置等。这是扁平风格(默认),视觉更轻。

卡片 vs 扁平

组件支持两种视觉风格:

  • 扁平风格(默认):纯色背景,适合嵌入密集的内容段落
  • 卡片风格card={true}):顶部带类型色渐变光晕,视觉更突出
提醒

这是卡片风格的提醒。注意顶部有一层淡淡的绿色光晕,让它在页面中更加醒目。

警告

这是卡片风格的警告。橙色的光晕从顶部向下扩散,配合 --alert-color CSS 变量自动适配。

插槽用法

Alert 提供两个插槽:

默认插槽

默认插槽用于放置提示的正文内容,支持任意 Markdown 内联元素:

问题

你可以在插槽中使用 Astro 官方文档 这样的超链接,也可以用 粗体代码片段 等格式。多段内容会自动换行,保持合理的行高和间距。

标题插槽

如果默认的 title 属性不够用,可以使用 Fragment slot="title" 自定义标题内容:

这是一个带 代码 的标题

标题插槽允许你在标题中插入任意 HTML 元素,比如代码片段或链接。

仅标题

不传默认插槽时,Alert 只显示标题行,body 区域自动隐藏:

提醒

自定义图标与颜色

通过 iconcolor 属性可以完全自定义图标和主题色,覆盖类型默认值:

仅标题,并且自定义图标和颜色
紫色火箭

自定义图标和颜色组合可以实现任意语义的提示块,不受内置五种类型的限制。

图标使用 Iconify 图标库,可以在其中搜索合适的图标名称。

核心实现

组件的核心逻辑非常简洁——一个类型配置表 + CSS 变量驱动样式:

const typeConfig = {
  tip: {
    icon: "material-symbols:check-circle-rounded",
    color: "#33AA77",
    title: "提醒",
  },
  info: {
    icon: "material-symbols:info-rounded",
    color: "#71717A",
    title: "信息",
  },
  question: {
    icon: "material-symbols:help-rounded",
    color: "#33AAFF",
    title: "问题",
  },
  warning: {
    icon: "material-symbols:warning-rounded",
    color: "#FF8800",
    title: "警告",
  },
  error: {
    icon: "material-symbols:error-rounded",
    color: "#FF3333",
    title: "错误",
  },
};

主题色通过 CSS 变量 --alert-color 传递给样式层,标题、图标、链接颜色都引用同一个变量,改一处即可全局生效:

.alert-header {
  color: var(--alert-color);
}
.alert-body a {
  color: var(--alert-color);
}

卡片风格的渐变光晕也使用同一个变量:

.alert-card {
  background-image: radial-gradient(
    circle at 4em -25em,
    var(--alert-color),
    transparent 30em
  );
}

Props 一览

属性类型默认值说明
type"tip" / "info" / "question" / "warning" / "error""tip"提示类型
cardbooleanfalse是否使用卡片风格
iconstring随类型自定义 Iconify 图标
colorstring随类型自定义主题色(CSS 颜色值)
titlestring随类型自定义标题文字

小结

Alert 组件虽然小巧,但覆盖了文章中最常见的提示场景。五种内置类型 + 自定义图标颜色 + 两个插槽,组合起来足够灵活。最关键的是——所有颜色都由一个 CSS 变量驱动,改主题色不需要动一行样式代码。

打赏中心

感谢你赐予我前进的力量

微信 微信
支付宝 支付宝
赞赏者名单 因为你们的支持让我意识到写文章的价值

来过,就留下你的足迹吧!