embersparks_obsidian-github.../THEMES.md
EmberSparks f9240bbf27 feat: 添加导出功能和主题支持
主要功能:
- 支持多种格式导出 GitHub stars(JSON、CSV、Markdown、TXT)
- 添加完整的主题系统,支持亮色/暗色模式
- 集成 emoji 支持,增强用户体验
- 优化 GitHub Actions 工作流配置
- 完善部署脚本和文档

技术改进:
- 重构项目结构,提升代码可维护性
- 添加类型定义,增强类型安全
- 优化 UI 组件和用户交互
- 完善错误处理和边界情况

🤖 Generated with [Claude Code](https://claude.ai/code)
2025-09-05 11:05:43 +08:00

6.4 KiB
Raw Blame History

主题系统技术文档

概述

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 的毛玻璃设计语言,旨在创造一种现代、优雅的视觉体验。主要特点:

  1. 透明度层次:使用多层透明度创建深度感
  2. 模糊效果backdrop-filter 实现真实的毛玻璃效果
  3. 动态背景:渐变色彩和动画增强视觉吸引力
  4. 交互反馈:悬停和点击时的微妙动画

核心技术实现

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日 - 液态玻璃主题重大优化

问题修复

  1. 字体模糊问题

    • 问题:卡片悬停时字体变模糊
    • 原因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;
      }
      
  2. 背景对比度不足

    • 问题:卡片与背景对比度不够,无法体现液态玻璃风格
    • 解决方案
      • 添加彩色渐变背景提高对比度
      • 增强卡片背景透明度从0.15提升到0.25
      • 提升边框透明度从0.3提升到0.4

视觉效果增强

  1. 多彩渐变背景

    • 使用蓝色、绿色、红色、紫色、黄色的渐变组合
    • 创造更丰富的视觉层次
  2. 动态背景动画

    • 20秒循环的浮动动画
    • 径向渐变的动态效果
  3. 光泽动画优化

    • 0.6秒的平滑过渡
    • 更自然的光泽扫过效果
  4. 阴影系统升级

    • 内阴影增强玻璃质感
    • 外阴影提供深度感

技术指标

  • 性能影响:最小化,使用 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%;
}

优势

  1. 自适应:根据容器宽度自动调整列数
  2. 性能优秀:纯 CSS 实现,无 JavaScript 计算
  3. 响应式:完美适配各种屏幕尺寸
  4. 流畅体验:避免卡片重叠和布局跳动

浏览器兼容性

特性 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+

性能优化

  1. 硬件加速:使用 transformopacity 触发 GPU 加速
  2. 避免重排:使用 transform 而非 top/left 进行动画
  3. 合理使用模糊:控制模糊半径避免性能问题
  4. 动画优化:使用 will-change 属性提示浏览器优化

未来规划

  1. 主题扩展:计划添加更多主题选项
  2. 自定义配置:允许用户自定义颜色和效果强度
  3. 深色模式:适配 Obsidian 的深色主题
  4. 动画控制:为用户提供动画开关选项

最后更新2024年8月8日