网站导航页面自定义指南
1868 字
9 分钟
网站导航页面自定义指南
✨ AI 概括
点击按钮,AI 将为你生成这篇文章的摘要
网站导航页面自定义指南
本文档详细介绍如何自定义网站导航页面,包括分类管理、网站添加、颜色配置等。
目录
功能概述
网站导航页面支持以下功能:
- 分类管理:可自由添加、删除、重命名分类
- 网站卡片:每个网站显示图标、名称、描述和标签
- 分类筛选:点击分类标签可筛选显示对应分类
- 响应式设计:自适应手机、平板、电脑
- 暗色模式:支持深色/浅色主题切换
- 自定义颜色:每个分类和网站可独立配置颜色
配置文件位置
所有配置都在一个文件中:
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"], // 标签数组}网站配置说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | ✅ | 网站名称 |
url | string | ✅ | 网站链接 |
description | string | ✅ | 网站描述 |
icon | string | ✅ | Iconify 图标名称 |
iconColor | string | ❌ | 图标背景颜色,默认使用分类颜色 |
tags | string[] | ✅ | 标签数组,可为空数组 [] |
删除网站
删除对应的网站对象即可。
修改网站信息
直接修改对应字段的值。
颜色配置
分类颜色
每个分类有两个颜色配置:
{ 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" // 购物查找图标
- 访问 Iconify
- 搜索图标名称
- 复制格式为
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: 启动开发服务器:
pnpm dev然后访问 http://localhost:4321/navigation/ 查看效果。
相关文件
- 配置文件:
src/config/navigationConfig.ts - 页面文件:
src/pages/navigation.astro - 样式文件:
src/styles/main.css(导航相关样式在文件末尾) - 导航栏配置:
src/config/navBarConfig.ts
技术支持
如有问题,请查看:
- Iconify 图标搜索
- Astro 官方文档
- 博客导航系列其他文章
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
网站导航页面自定义指南
https://f3f3.top/posts/navigation-customization/ 相关文章 智能推荐
1
自定义导航栏
博客导航 详细介绍如何为 Firefly 博客添加自定义导航栏菜单项,以"说说"功能为例
2
博客导航
博客导航 这是文章描述
3
FireflyBlog + blogspring 前后端联调完整指南
博客导航 FireflyBlog 与 Spring Boot 后端联调的完整技术文档,包含架构设计、阿里云服务器配置、部署流程、前后端对接和常见问题排查
4
FireflyBlog AI 功能完整指南
博客导航 FireflyBlog 博客 AI 问答与文章概括功能的完整技术文档,包含架构设计、实现细节、配置说明和注意事项
5
音乐页面搭建指南
博客导航 博客音乐页面的完整搭建流程,包括本地歌曲配置、封面设置和云端音乐获取。
随机文章 随机推荐