Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SVGアイコンのダークテーマ対応

 SVGアイコンのダークテーマ対応

▼概要
AkarengaLT vol.34 (2025/6/22) での発表資料です。
OSSプロジェクト「kestra」でのIssue対応を通して学んだ、SVGアイコンのダークモード対応について紹介。

▼内容
1. SVGとは?ベクター画像の特徴
2. ダークモード時にアイコンが見えない問題の解決
a. fill="currentColor"による親要素の色継承
3. システム的な検知方法
a. PlaywrightのVRTやVitestでの自動テスト
b. CSS設計でのテーマ色一元管理

Avatar for enumura

enumura

June 22, 2025
Tweet

More Decks by enumura

Other Decks in Programming

Transcript

  1. 1. SVGとは? 項目 SVG(ベクター) PNG/JPEG/WebP(ラスター) 拡大時の品質 劣化なし ピクセレーションが発生 ファイルサイズ シンプルな図形は小さい

    大きい 編集 CSS/JSで動的に変更可能 画像編集ソフトが必要 ユースケース アイコン 、ロゴ、図形 写真、複雑な画像
  2. 16 ▼fill属性とは? 2. OSSとissue - fill属性:SVG要素の 塗りつぶし色 を指定(※) - 指定できる値:色名、HEXカラー、RGBカラー

    - SVGのfill属性に currentColor を指定すると、 親要素の colorプロパティ の値を自動的に継承し塗りつぶし 参考:MDN Web Docs - fill属性 ※:図形・テキスト用途の場合
  3. 3. 今後の活用 18 - テーマの切り替え - 色指定の抜け漏れ - 自分:せっかくなので実務にどう生かすか考えてみた -

    システム的に検知できれば happy! - 抜け漏れないようなCSSの設計がきたら happy!
  4. 3. 今後の活用 19 1. VRT(Visual Regression Testing) a. PlayWright 2.

    UT a. Jest、Vitest 3. CSSの設計 a. テーマの色を一元管理 ▼テストの実装
  5. 3. 今後の活用 20 1. VRT(Visual Regression Testing) a. PlayWright 2.

    UT a. Jest、Vitest 3. CSSの設計 a. テーマの色を一元管理 ▼テストの実装
  6. 3. 今後の活用 21 ▼VRT - Themeを切り替え - toHaveScreenshot() - それぞれスクショ取得

    - 画素レベルで差分を検知 - 変更時に自動で問題を検知 参考:Appendix テーマ別のVRT
  7. 3. 今後の活用 23 1. VRT(Visual Regression Testing) a. PlayWright 2.

    UT a. Jest、Vitest 3. CSSの設計 a. テーマの色を一元管理 ▼テストの実装
  8. 3. 今後の活用 25 1. VRT(Visual Regression Testing) a. PlayWright 2.

    UT a. Jest、Vitest 3. CSSの設計 a. テーマの色を一元管理 ▼テストの実装
  9. 4. まとめ 28 ▼今回学んだこと - ベクター画像とラスター画像について - SVGアイコンは fill="currentColor" 塗りつぶしできる

    - 親要素の color プロパティを自動継承 - PlaywrightのVRTやVitestで自動テスト、CSS設計
  10. 1. SVGとは? ▼ユースケース - サイトのロゴ(シンプルな図形) - アイコン(ボタンやメニュー) ▼ SVG ▼

    PNG、JPEG、他 - 写真全般(人物、風景、商品写真など) - アイコン(ボタンやメニュー) 🏞 󰞴
  11. 2. 基本的な書き方 1. <animate> タグ - 基本的なアニメーション a. サイズ、色、透明度などの属性を変化 b.

    例:円のサイズを大きくしたり小さくしたり 2. <animateTransform> タグ - 変形アニメーション a. 回転、移動、拡大縮小 b. 例:図形をくるくる回転させる 3. <animateMotion> タグ - パス移動アニメーション a. 指定した軌道に沿って移動 b. 例:曲線や複雑な軌道を描いて移動