网站导航页面自定义指南

分钟
网站导航页面自定义指南
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
暂无歌词
我和宝宝在一起已经
---------TSH ❤️ CXY---------
---------TSH
❤️
CXY---------
0 0 0 0 0 00
分类
标签
站点统计
文章
17
分类
5
标签
24
总字数
51,329
运行时长
0
最后活动
0 天前

文章目录

🤖 AI 助手

👋 你好!

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