CSS設計の方針
- 命名: BEMに準拠
- レスポンシブ: 768pxブレークでPC/SP切替
- ユーティリティ: .hidden-pc, .hidden-spで要素切り替え、.u-pc, .u-spで実装(直後に一部表記差異あり)
- モーダル: dialogでスムーズな開閉を実現
JavaScriptで実装した機能
- ドロワーメニュー(ハンバーガーとドロワーの連動)
- アコーディオン(slideToggleを使用)
- Swiperでギャラリー(インライン設定)
- モーダル(dialogのshowModal/closeとイベント連動)
- スムーズスクロール(jQuery animate)
- ページトップ表示切替
- Intersection Observer APIでフェードイン
モーダルダイアログの実装で工夫した点
<dialog>を採用。showModal()と.close()で制御。背景は::backdrop、ロールバック対応で-ms-backdropを追加。overscroll-behavior-y: noneで背景スクロールを防止。
Swiperライブラリの導入について
CDN読み込み。設定はspaceBetween: 82、loop: true、ページネーション・ナビゲーション。カスタム要素を使いマークアップ側から制御。
Intersection Observerを使ったふわっと表示
セクション見出し(.js-in-view)に適用。可視時に.is-in-viewを付与して表示。translateY(24px)→translateY(0)でフェードイン。
フォームの工夫
- カスタムラジオボタン:.form-radio-textの疑似要素で制御
- カスタムチェックボックス:同様に疑似要素+背景画像で制御
- セレクトボックス:appearance: noneとbackgroundで矢印付与
- ホバー/フォーカス時のborder-color変更
このコーディングで特に工夫した点
モダンAPIと既存ライブラリの組み合わせ。スクロール連動やスライダーは外部実装、フェードインはIntersection Observerで効率的に実現。冗長なJS依存を避けた。
このコーディングでの学び
- <dialog>でモーダルをシンプルに実装
- Swiperで短時間で高品質なスライダーを提供
- Intersection Observerでスクロール連動アニメーションを効率化
- <details>で既存のHTML開閉機能を活用
- overscroll-behavior-yで背景スクロールを抑制


