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

CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略

 CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略

ExciteHD TechCon 2025の登壇資料です。

Avatar for Saito Ayumu

Saito Ayumu

June 22, 2025
Tweet

More Decks by Saito Ayumu

Other Decks in Technology

Transcript

  1. Front-end strategy to combine CSS and JS into HTML templates

    齋藤 歩 エキサイト株式会社 メディア・プラットフォーム事業部 デザイナー CSS、JSをHTMLテンプレートにまとめる フロントエンド戦略
  2. フロントエンドを取り巻く環境 01 要素を消すときの思考 <div class="entry-cta__wrapper mt40 columnSet"> <p class="fs16 fwB">

    ここから記事を書くとポイントがもらえます</p> <button type="button" class="entry-cta__btn"> 記事を書く</button> </div>
  3. フロントエンドを取り巻く環境 01 要素を消すときの思考 これはユーティリティクラス? JSの処理がありそう。どこだろう? BEMぽい!CSSも消さないと <div class="entry-cta__wrapper mt40 columnSet">

    <p class="fs16 fwB"> ここから記事を書くとポイントがもらえます</p> <button type="button" class="entry-cta__btn"> 記事を書く</button> </div>
  4. フロントエンドを取り巻く環境 01 要素を消すときの思考 これはユーティリティクラス? JSの処理がありそう。どこだろう? BEMぽい!CSSも消さないと <div class="entry-cta__wrapper mt40 columnSet">

    <p class="fs16 fwB"> ここから記事を書くとポイントがもらえます</p> <button type="button" class="entry-cta__btn"> 記事を書く</button> </div> 自分以外が実装した要素を消すのは大変
  5. 理想状態を実現するための「ひとまとめ」戦略 <div class="entry-cta__wrapper mt40 columnSet"> <p class="fs16 fwB"> ここから記事を書くとポイントがもらえます</p> <button

    type="button" class="entry-cta__btn"> 記事を書く</button> </div> 02 要素を消すときの思考 これはユーティリティクラス? コンテンツ的にJSの処理がありそう。どこだろう? BEMぽい!CSSも消さないと
  6. 理想状態を実現するための「ひとまとめ」戦略 <div class="entry-cta__wrapper mt40 columnSet"> <p class="fs16 fwB"> ここから記事を書くとポイントがもらえます</p> <button

    type="button" class="entry-cta__btn"> 記事を書く</button> </div> 02 要素を消すときの思考 これはユーティリティクラス? コンテンツ的にJSの処理がありそう。どこだろう? BEMぽい!CSSも消さないと HTMLだけなら楽なのに⋯
  7. 理想状態を実現するための「ひとまとめ」戦略 <div class="entry-cta__wrapper mt40 columnSet"> <p class="fs16 fwB"> ここから記事を書くとポイントがもらえます</p> <button

    type="button" class="entry-cta__btn"> 記事を書く</button> </div> 02 要素を消すときの思考 これはユーティリティクラス? コンテンツ的にJSの処理がありそう。どこだろう? BEMぽい!CSSも消さないと HTMLだけにしてしまおう!
  8. 理想状態を実現するための「ひとまとめ」戦略 02 CSSはすべてstyle属性に記述する? <p style="font-size: 16px; font-weight: bold;">Hello World</p> HTMLとCSSの凝集度は高められる

    スコープが効いた状態になるので、異なる要素間での影響は排除できる メディアクエリや擬似クラスが使用できない
  9. 理想状態を実現するための「ひとまとめ」戦略 02 キーが離されてから1.5秒後にPOST&入力値をリアルタイムに表示 <div x-data="{ inputtedText: '' }" class="flex items-center

    gap-2 p-4"> <label> <span> ニックネーム</span> <input type="text" name="nickname" x-model="inputtedText" hx-post="/save" hx-trigger="keyup changed delay:1.5s"> </label> <p> 入力値は:<span x-text="inputtedText"></span></p> </div>