Skip to content

feat: スクロールバーのダークモード対応#5

Merged
hirano00o merged 4 commits intomainfrom
feat/scrollbar-dark-mode
Mar 12, 2026
Merged

feat: スクロールバーのダークモード対応#5
hirano00o merged 4 commits intomainfrom
feat/scrollbar-dark-mode

Conversation

@hirano00o
Copy link
Owner

@hirano00o hirano00o commented Mar 12, 2026

Summary

  • .gce-code-wrap のスクロールバーをテーマカラーに合わせ、ダークモードで浮いて見える問題を解消
  • --gce-scrollbar-thumb カスタムプロパティをライト/ダーク各テーマの :root に追加(GitHub 公式カラートークン準拠)
  • @supports (scrollbar-color: auto) で Chrome 121+ / Firefox に標準プロパティを適用し、@supports not (scrollbar-color: auto) で Safari 等に webkit 疑似要素をフォールバック適用

対応ブラウザ

ブラウザ 適用されるルール
Chrome 121+ / Firefox scrollbar-color + scrollbar-width: thin
Safari (macOS/iOS) ::-webkit-scrollbar-* 疑似要素

Test plan

  • npm test — 全89テストパス
  • npm run build:all — ライト/ダーク両ビルド成功
  • test-page.html でダークビルドを読み込み、スクロールバーの見た目を目視確認

ダークモードビルドでスクロールバーがブラウザデフォルト(明るい色)のまま
浮いて見える問題を解消するため、テーマ別カスタムプロパティとスクロールバー
CSS ルールを追加した。

- Firefox: scrollbar-color / scrollbar-width で対応
- Chrome/Safari/Edge: ::-webkit-scrollbar 系疑似要素で対応
Chrome 121+ では scrollbar-width が有効な場合 ::-webkit-scrollbar-* が無視されるため、
border-radius: 4px が Chrome では適用されず Safari でのみ効く非対称な挙動になっていた。
- @supports not selector(::-webkit-scrollbar) で Firefox 専用の
  scrollbar-color / scrollbar-width を排他化(Chrome 121+ で両方書くと
  ::-webkit-scrollbar-* が無視されるため共存は無意味)
- --gce-scrollbar-track を削除し、webkit 側のトラック色を --gce-code-bg
  から直接参照することで重複変数を除去
Chrome 121+ は ::-webkit-scrollbar を認識し続けるため
@supports not selector(::-webkit-scrollbar) が false となり
標準プロパティが Chrome に適用されない問題を修正した。
MDN 推奨の @supports (scrollbar-color: auto) パターンに変更し、
標準プロパティ対応ブラウザと webkit 疑似要素フォールバックを排他化する。
@hirano00o hirano00o merged commit e5d2b97 into main Mar 12, 2026
1 check passed
@hirano00o hirano00o deleted the feat/scrollbar-dark-mode branch March 12, 2026 01:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant