Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AngularアプリケーションにおけるCSS設計手法
Search
kou
June 16, 2018
Programming
8
5.9k
AngularアプリケーションにおけるCSS設計手法
AngularアプリケーションでどのようにCSSが書けるのかということにフォーカスして、CSSの書き方を紹介します。
kou
June 16, 2018
Tweet
Share
More Decks by kou
See All by kou
Angular Webアプリケーションの最新設計手法.pdf
koumatsumot0
7
11k
NgRx v7
koumatsumot0
1
500
NgRxについて考えたこと
koumatsumot0
0
240
きれいなCSSを書くためのTools
koumatsumot0
0
430
Other Decks in Programming
See All in Programming
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
310
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
280
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
420
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
640
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
300
AIコーディングエージェント(skywork)
kondai24
0
200
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
590
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
120
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
380
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
290
Design in an AI World
tapps
0
100
Context Engineering - Making Every Token Count
addyosmani
9
550
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
400
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
190
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
51
45k
Documentation Writing (for coders)
carmenintech
77
5.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Transcript
AngularアプリケーションにおけるCSS設計手法 ng-japan 2018
@kou bitbank, inc Cryptocurrency Exchange
CSS設計とは ?
CSS設計とは ? - BEM - SMACSS - OOCSS
なぜCSS設計が必要 ?
なぜCSS設計が必要 ? - 名前空間がない - 値の再利用が難しい - Web開発はCSSの弱い言語仕様との闘い
Angularでは ?
Angularでは、既存のCSS設計は不要
Angularでは、既存のCSS設計は不要 Angularそのものが強力な設計である - Component - Scoped CSS
しかし、AngularにおいてもCSSの問題は多くある
しかし、AngularにおいてもCSSの問題は多くある Angularを知り、より良いアプローチが必要
今日の話 1. AngularにはどんなCSSがあるか 2. どう値を共通化できるか
AngularにはどんなCSSがあるか
AngularにはどんなCSSがあるか 1. Component CSS 2. Shared CSS 3. Global CSS
Component CSS - 1つのComponentに対して専用のCSS - CSSは読み込まれたComponentの中にだけ適 用される
Component CSS hero.component.css / .heroes { margin: 8px; padding: 0;
width: 256px; } .hero-item { cursor: pointer; position: relative; } hero.component.ts @Component({ selector: 'app-hero', templateUrl: './hero.component.html', styleUrls: ['./hero.component.css'], }) export class HeroComponent { }
Shared CSS - 複数Componentに対して共通のCSS - CSSは読み込まれたComponentの中にだけ 適用される
Shared CSS hero-common.css / .hero-common-layout { display: block; padding: 8px;
} .hero-common-table { border-collapse: collapse; } .hero-common-form fieldset { border: 0; } villain.component.ts @Component({ selector: 'app-villain', templateUrl: './villain.component.html', styleUrls: ['./hero-common.css'], }) export class VillainComponent {} hero.component.ts @Component({ selector: 'app-hero', templateUrl: './hero.component.html', styleUrls: ['./hero-common.css'], }) export class HeroComponent {}
Global CSS - 全Componentに対して共通に適用される - 普通のCSS
Global CSS style.css / .app-primary-color { color: red; } .app-flex-layout
{ display: flex; } .app-margin-1x { margin: 8px; } angular,json { ... "styles": [ "style.css" ], ... }
それぞれのCSSの使い分け
Component CSS Shared CSS Global CSS 全てのCSSの基本。このCSSだけでアプリケーションが構成できるのが理想。 名前空間は使わず、本質的でシンプルな名前を使う。 - 例)
.button, .card, .list ページ用のComponentのレイアウトなど、Componentにしづらい共通部分に使用。 名前空間 & ユニークなclass名を使用し、必ず定義元を特定できるようにする。 - 例) .hero-common-layout, .hero-common-form フレームワークとしてのCSSに使用する。(オリジナルなUtil系のCSSなど) 名前空間 & ユニークなclass名を使用し、必ず定義元を特定できるようにする。 - 例) .app-flex-layout, .app-margin-1x
おすすめ - Component CSSを使い、Global CSSを使用しない - 良いCSS設計とは、良いComponent設計 - 複数ComponentにまたがるShared CSSが多い場合は、
Component設計を見直す
どう値を共通化できるか どのようにしてアプリケーション全体に 散らばる値を共通化するか ?
Sass (SCSS) を使用する - 変数 - Mixin - 前述の3種類のCSSの値をSassのレベルで共通化
変数 / Mixin などのSass設定値 Component CSS Shared CSS Global CSS
Sassの設定値から、各CSSファイルをトランスパイル
ディレクトリ構造と読み込み Project Structure - src - app - assets -
environments - styles - variables/ - mixins/ - _common.scss ... _common.scss @import './variables/index'; @import './mixins/index'; hero.component.scss @import 'common'; villain.component.scss @import 'common'; angular,json { ... "stylePreprocessorOptions": { "includePaths": [ "src/styles" ] }, ... }
変数とMixinの使い所
変数 Mixin 色や数値など、値に関するものは変数にして、積極的に名前を付ける。 変数の上書きは禁止。全ファイルで読み込む変数はユニークな名前にする。 - 例) $layout-base-padding: 8px - 例)
$primary-color: #4CAF50 まとまった単位でのstyleのセットを共通化する時に使用する。 値のセットはCSSのclassで共通化するよりも、Mixinを使用する。 - 例) font, line-height, letter-spacing など関連する値をまとめる時
おすすめ - Sassの機能を積極的に使う - 値は変数として命名する - 正しい変数名は、それ自体がドキュメントになる
CSSの分け方 / 値の共通の仕方
CSSの分け方 / 値の共通の仕方 まだまだ、その他のアプローチも考えられる
まずは、何よりも - 半年後にすぐに消せるコードを書くこと - CSSのコードは一番変わりやすい - どうすればメンテナンスしやすいかと考える意識が重要
Thank you !!