网站导航页面自定义指南

1868 字
9 分钟
网站导航页面自定义指南
AI 概括

点击按钮,AI 将为你生成这篇文章的摘要

网站导航页面自定义指南#

本文档详细介绍如何自定义网站导航页面,包括分类管理、网站添加、颜色配置等。


目录#

  1. 功能概述
  2. 配置文件位置
  3. 配置结构说明
  4. 自定义分类
  5. 自定义网站
  6. 颜色配置
  7. 图标使用
  8. 完整示例
  9. 注意事项
  10. 常见问题

功能概述#

网站导航页面支持以下功能:

  • 分类管理:可自由添加、删除、重命名分类
  • 网站卡片:每个网站显示图标、名称、描述和标签
  • 分类筛选:点击分类标签可筛选显示对应分类
  • 响应式设计:自适应手机、平板、电脑
  • 暗色模式:支持深色/浅色主题切换
  • 自定义颜色:每个分类和网站可独立配置颜色

配置文件位置#

所有配置都在一个文件中:

src/config/navigationConfig.ts

只需编辑这一个文件即可完成所有自定义。


配置结构说明#

export const navigationConfig = {
// 页面标题
title: "网站导航",
// 页面描述
description: "我常用和推荐的网站",
// 分类配置数组
categories: [
{
id: "分类ID", // 唯一标识符
name: "分类名称", // 显示名称
icon: "图标名称", // Iconify 图标
color: "#颜色代码", // 主题颜色
dotColor: "#颜色代码", // 标签圆点颜色(可选)
sites: [ // 网站数组
// ...网站配置
],
},
// ...更多分类
] as NavCategory[],
};

自定义分类#

添加新分类#

categories 数组中添加新的分类对象:

{
id: "new-category", // 唯一ID,不能与其他分类重复
name: "我的新分类", // 显示名称
icon: "material-symbols:star", // 分类图标
color: "#ff6b6b", // 主题颜色
dotColor: "#ff6b6b", // 标签圆点颜色
sites: [], // 网站列表
}

删除分类#

直接删除对应的分类对象即可。

重命名分类#

修改 name 字段的值:

{
id: "my-sites",
name: "我的网站", // 修改这里
// ...
}

隐藏空分类#

如果分类没有网站(sites: []),页面会自动隐藏该分类的标签和内容区域。


自定义网站#

添加新网站#

在对应分类的 sites 数组中添加网站对象:

{
name: "网站名称",
url: "https://example.com",
description: "网站描述",
icon: "mdi:earth", // 图标名称
iconColor: "#4CAF50", // 图标背景颜色(可选)
tags: ["标签1", "标签2"], // 标签数组
}

网站配置说明#

字段类型必填说明
namestring网站名称
urlstring网站链接
descriptionstring网站描述
iconstringIconify 图标名称
iconColorstring图标背景颜色,默认使用分类颜色
tagsstring[]标签数组,可为空数组 []

删除网站#

删除对应的网站对象即可。

修改网站信息#

直接修改对应字段的值。


颜色配置#

分类颜色#

每个分类有两个颜色配置:

{
color: "#3b82f6", // 主要颜色,用于:
// - 分类图标背景
// - 分类标题
// - 分隔线渐变
// - 网站标签背景和文字(如果没有单独配置)
dotColor: "#3b82f6", // 标签圆点颜色(可选)
// 如果不设置,使用 color 的值
}

网站卡片颜色#

网站卡片有左边框颜色,自动使用所属分类的颜色。

图标颜色#

{
iconColor: "#24292e", // 图标背景颜色
// 如果不设置,使用所属分类的 color
}

推荐颜色搭配#

分类推荐颜色色值
我的网站蓝色#3b82f6
常用网站橙色#f97316
资源网站粉色#ec4899
工具网站绿色#10b981
大佬博客紫色#8b5cf6
学习网站青色#06b6d4
文档黄绿色#84cc16
其他网站灰色#6b7280

图标使用#

图标格式#

使用 Iconify 图标库,格式为:

图标库:图标名称

常用图标示例#

分类图标#

// 人物相关
"material-symbols:person" // 人物
"material-symbols:group" // 群组
"material-symbols:people" // 人群
// 工具相关
"material-symbols:build" // 工具
"material-symbols:settings" // 设置
"material-symbols:code" // 代码
// 文件相关
"material-symbols:folder" // 文件夹
"material-symbols:description" // 文档
"material-symbols:book" // 书籍
// 星标相关
"material-symbols:star" // 星星
"material-symbols:favorite" // 喜爱
"material-symbols:bookmark" // 书签
// 其他
"material-symbols:school" // 学校
"material-symbols:language" // 语言
"material-symbols:public" // 公共

网站图标#

// 常用网站图标
"mdi:github" // GitHub
"mdi:tray-arrow-up" // Vercel
"mdi:cloud" // Cloud
"mdi:email" // 邮箱
"mdi:image-multiple" // 相册
"mdi:notebook" // 笔记本
"mdi:run" // 跑步
"mdi:comment-text-multiple" // 评论
"mdi:emoticon-outline" // Emoji
"mdi:filmstrip" // 电影
"mdi:draw" // 绘画
"mdi:book-open-variant" // 书籍
"mdi:rocket-launch" // 火箭
"mdi:earth" // 地球
"mdi:music" // 音乐
"mdi:video" // 视频
"mdi:shopping" // 购物

查找图标#

  1. 访问 Iconify
  2. 搜索图标名称
  3. 复制格式为 prefix:name 的图标名称

完整示例#

示例1:添加”学习资源”分类#

{
id: "learning",
name: "学习资源",
icon: "material-symbols:school",
color: "#06b6d4",
dotColor: "#06b6d4",
sites: [
{
name: "MDN Web Docs",
url: "https://developer.mozilla.org",
description: "Web 开发文档与学习资源",
icon: "mdi:book-open-variant",
iconColor: "#06b6d4",
tags: ["文档", "前端"],
},
{
name: "W3School",
url: "https://w3school.com.cn",
description: "Web 技术教程",
icon: "mdi:school",
iconColor: "#04a604",
tags: ["教程", "入门"],
},
],
}

示例2:添加个人项目#

{
id: "my-projects",
name: "我的项目",
icon: "material-symbols:code",
color: "#8b5cf6",
sites: [
{
name: "我的博客",
url: "https://your-blog.com",
description: "个人技术博客",
icon: "mdi:web",
iconColor: "#8b5cf6",
tags: ["博客", "技术"],
},
{
name: "GitHub 仓库",
url: "https://github.com/your-username",
description: "我的开源项目",
icon: "mdi:github",
iconColor: "#24292e",
tags: ["开源", "代码"],
},
],
}

示例3:添加外部链接网站#

{
id: "external",
name: "推荐网站",
icon: "material-symbols:public",
color: "#f59e0b",
sites: [
{
name: "知乎",
url: "https://zhihu.com",
description: "中文问答社区",
icon: "mdi:comment-question",
iconColor: "#0066ff",
tags: ["社区", "问答"],
},
],
}

注意事项#

1. ID 唯一性#

每个分类的 id 必须唯一,不能与其他分类重复:

// ✅ 正确
{ id: "my-sites", ... }
{ id: "frequently-used", ... }
// ❌ 错误 - ID 重复
{ id: "my-sites", ... }
{ id: "my-sites", ... }

2. 图标名称格式#

图标名称必须是 prefix:name 格式:

// ✅ 正确
icon: "mdi:github"
icon: "material-symbols:star"
// ❌ 错误
icon: "github"
icon: "star"

3. 颜色格式#

颜色必须是有效的 HEX 格式:

// ✅ 正确
color: "#3b82f6"
color: "#fff"
// ❌ 错误
color: "blue"
color: "rgb(59, 130, 246)"

4. URL 格式#

外部链接必须包含协议:

// ✅ 正确
url: "https://github.com"
url: "http://example.com"
// ❌ 错误
url: "github.com"
url: "//example.com"

5. 标签数量#

建议每个网站的标签数量控制在 1-3 个,过多会影响显示效果。

6. 描述长度#

建议描述控制在 20 字以内,过长会被截断显示。

7. 图标库依赖#

项目已配置 Iconify 图标库,支持所有主流图标库:

  • Material Symbols
  • MDI (Material Design Icons)
  • Lucide
  • Heroicons
  • 等等…

常见问题#

Q: 如何修改分类标签的颜色?#

A: 修改对应分类的 dotColor 字段:

{
id: "my-sites",
name: "我的网站",
color: "#3b82f6",
dotColor: "#ff0000", // 修改这里改变圆点颜色
// ...
}

Q: 如何让某个分类不显示?#

A: 将该分类的 sites 数组设为空:

{
id: "hidden-category",
name: "隐藏分类",
sites: [], // 空数组会自动隐藏
// ...
}

Q: 如何修改页面标题?#

A: 修改配置文件顶部的 title 字段:

export const navigationConfig = {
title: "我的导航", // 修改这里
// ...
};

Q: 如何添加没有图标的网站?#

A: 图标是必填项,但可以使用通用图标:

{
name: "某网站",
icon: "mdi:web", // 使用通用网页图标
// ...
}

Q: 如何修改卡片左边框颜色?#

A: 卡片左边框颜色自动使用所属分类的颜色,无法单独配置。

Q: 分类标签显示不全?#

A: 分类标签支持横向滚动,在移动端可以左右滑动查看。

Q: 如何预览修改效果?#

A: 启动开发服务器:

Terminal window
pnpm dev

然后访问 http://localhost:4321/navigation/ 查看效果。


相关文件#

  • 配置文件:src/config/navigationConfig.ts
  • 页面文件:src/pages/navigation.astro
  • 样式文件:src/styles/main.css(导航相关样式在文件末尾)
  • 导航栏配置:src/config/navBarConfig.ts

技术支持#

如有问题,请查看:

  1. Iconify 图标搜索
  2. Astro 官方文档
  3. 博客导航系列其他文章

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
网站导航页面自定义指南
https://f3f3.top/posts/navigation-customization/
作者
lyf
发布于
2026-05-29
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
lyf
Hello, I'm LyF.
公告
欢迎来到一飞的博客!。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
14
分类
5
标签
16
总字数
48,064
运行时长
0
最后活动
0 天前

文章目录

🤖 AI 助手

👋 你好!

我可以帮你解答关于这篇文章的问题