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

AngularアプリケーションにおけるCSS設計手法

kou
June 16, 2018

 AngularアプリケーションにおけるCSS設計手法

AngularアプリケーションでどのようにCSSが書けるのかということにフォーカスして、CSSの書き方を紹介します。

kou

June 16, 2018
Tweet

More Decks by kou

Other Decks in Programming

Transcript

  1. 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 { }
  2. 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 {}
  3. Global CSS style.css / .app-primary-color { color: red; } .app-flex-layout

    { display: flex; } .app-margin-1x { margin: 8px; } angular,json { ... "styles": [ "style.css" ], ... }
  4. 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
  5. 変数 / Mixin などのSass設定値 Component CSS Shared CSS Global CSS

    Sassの設定値から、各CSSファイルをトランスパイル
  6. ディレクトリ構造と読み込み 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" ] }, ... }
  7. 変数 Mixin 色や数値など、値に関するものは変数にして、積極的に名前を付ける。 変数の上書きは禁止。全ファイルで読み込む変数はユニークな名前にする。 - 例) $layout-base-padding: 8px - 例)

    $primary-color: #4CAF50 まとまった単位でのstyleのセットを共通化する時に使用する。 値のセットはCSSのclassで共通化するよりも、Mixinを使用する。 - 例) font, line-height, letter-spacing など関連する値をまとめる時