mirror of
https://github.com/embersparks/obsidian-github-stars-manager.git
synced 2026-07-22 06:44:31 +00:00
主要功能: - 支持多种格式导出 GitHub stars(JSON、CSV、Markdown、TXT) - 添加完整的主题系统,支持亮色/暗色模式 - 集成 emoji 支持,增强用户体验 - 优化 GitHub Actions 工作流配置 - 完善部署脚本和文档 技术改进: - 重构项目结构,提升代码可维护性 - 添加类型定义,增强类型安全 - 优化 UI 组件和用户交互 - 完善错误处理和边界情况 🤖 Generated with [Claude Code](https://claude.ai/code)
6.4 KiB
6.4 KiB
主题系统技术文档
概述
Obsidian GitHub Stars Manager 插件提供了两种主题:默认主题和液态玻璃主题。本文档详细介绍了主题系统的技术实现,特别是液态玻璃主题的设计理念和最新优化。
主题架构
主题切换机制
插件使用 CSS 类切换来实现主题功能:
// 主题切换逻辑
toggleTheme(theme: 'default' | 'ios-glass') {
const container = this.containerEl;
container.removeClass('github-stars-theme-default', 'github-stars-theme-ios-glass');
container.addClass(`github-stars-theme-${theme}`);
}
CSS 变量系统
液态玻璃主题使用 CSS 自定义属性来管理颜色和效果:
.github-stars-theme-ios-glass {
--ios-glass-bg: rgba(255, 255, 255, 0.25);
--ios-glass-bg-secondary: rgba(255, 255, 255, 0.15);
--ios-glass-border: rgba(255, 255, 255, 0.3);
--ios-glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
--ios-glass-blur: blur(20px);
--ios-glass-accent: rgba(0, 122, 255, 0.8);
}
液态玻璃主题详解
设计理念
液态玻璃主题灵感来源于 iOS 的毛玻璃设计语言,旨在创造一种现代、优雅的视觉体验。主要特点:
- 透明度层次:使用多层透明度创建深度感
- 模糊效果:backdrop-filter 实现真实的毛玻璃效果
- 动态背景:渐变色彩和动画增强视觉吸引力
- 交互反馈:悬停和点击时的微妙动画
核心技术实现
1. 多层渐变背景
.github-stars-theme-ios-glass .github-stars-container {
background:
/* 彩色渐变层 */
linear-gradient(135deg,
rgba(74, 144, 226, 0.12) 0%,
rgba(80, 200, 120, 0.08) 25%,
rgba(255, 107, 107, 0.06) 50%,
rgba(196, 181, 253, 0.08) 75%,
rgba(251, 191, 36, 0.1) 100%),
/* 基础白色渐变层 */
linear-gradient(135deg,
rgba(255, 255, 255, 0.15) 0%,
rgba(255, 255, 255, 0.08) 100%);
}
2. 动态浮动动画
.github-stars-theme-ios-glass .github-stars-container::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle,
rgba(74, 144, 226, 0.03) 0%,
transparent 50%);
animation: float 20s ease-in-out infinite;
}
@keyframes float {
0%, 100% { transform: translate(0, 0) rotate(0deg); }
33% { transform: translate(30px, -30px) rotate(120deg); }
66% { transform: translate(-20px, 20px) rotate(240deg); }
}
3. 毛玻璃模糊效果
.github-stars-theme-ios-glass .github-stars-repo {
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.4);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.4),
0 8px 32px rgba(0, 0, 0, 0.12);
}
4. 光泽扫过动画
.github-stars-theme-ios-glass .github-stars-repo::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg,
transparent 0%,
rgba(255, 255, 255, 0.15) 50%,
transparent 100%);
transition: left 0.6s ease;
}
.github-stars-theme-ios-glass .github-stars-repo:hover::before {
left: 100%;
}
最新优化记录
2024年8月8日 - 液态玻璃主题重大优化
问题修复
-
字体模糊问题
- 问题:卡片悬停时字体变模糊
- 原因:
transform: scale(1.02)导致的亚像素渲染问题 - 解决方案:
.github-stars-theme-ios-glass .github-stars-repo:hover { transform: translateY(-3px); /* 移除scale避免字体模糊 */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
-
背景对比度不足
- 问题:卡片与背景对比度不够,无法体现液态玻璃风格
- 解决方案:
- 添加彩色渐变背景提高对比度
- 增强卡片背景透明度(从0.15提升到0.25)
- 提升边框透明度(从0.3提升到0.4)
视觉效果增强
-
多彩渐变背景
- 使用蓝色、绿色、红色、紫色、黄色的渐变组合
- 创造更丰富的视觉层次
-
动态背景动画
- 20秒循环的浮动动画
- 径向渐变的动态效果
-
光泽动画优化
- 0.6秒的平滑过渡
- 更自然的光泽扫过效果
-
阴影系统升级
- 内阴影增强玻璃质感
- 外阴影提供深度感
技术指标
- 性能影响:最小化,使用 CSS 硬件加速
- 兼容性:支持现代浏览器的 backdrop-filter
- 响应式:完全适配不同屏幕尺寸
- 可访问性:保持良好的对比度和可读性
瀑布流布局
实现原理
使用 CSS Column 布局实现类似小红书的瀑布流效果:
.github-stars-theme-ios-glass .github-stars-repos {
column-count: auto;
column-width: 280px;
column-gap: 20px;
padding: 0 20px 20px 20px;
}
.github-stars-theme-ios-glass .github-stars-repo {
break-inside: avoid;
margin-bottom: 20px;
display: inline-block;
width: 100%;
}
优势
- 自适应:根据容器宽度自动调整列数
- 性能优秀:纯 CSS 实现,无 JavaScript 计算
- 响应式:完美适配各种屏幕尺寸
- 流畅体验:避免卡片重叠和布局跳动
浏览器兼容性
| 特性 | Chrome | Firefox | Safari | Edge |
|---|---|---|---|---|
| backdrop-filter | ✅ 76+ | ✅ 103+ | ✅ 9+ | ✅ 79+ |
| CSS Grid | ✅ 57+ | ✅ 52+ | ✅ 10+ | ✅ 16+ |
| CSS Columns | ✅ 50+ | ✅ 52+ | ✅ 9+ | ✅ 12+ |
| CSS Animations | ✅ 43+ | ✅ 16+ | ✅ 9+ | ✅ 12+ |
性能优化
- 硬件加速:使用
transform和opacity触发 GPU 加速 - 避免重排:使用
transform而非top/left进行动画 - 合理使用模糊:控制模糊半径避免性能问题
- 动画优化:使用
will-change属性提示浏览器优化
未来规划
- 主题扩展:计划添加更多主题选项
- 自定义配置:允许用户自定义颜色和效果强度
- 深色模式:适配 Obsidian 的深色主题
- 动画控制:为用户提供动画开关选项
最后更新:2024年8月8日