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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 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>