0Pricing
Angular Academy · レッスン

コンポーネントスコープのスタイル

スタイルをコンポーネント内に限定します。

「コンポーネントスコープのスタイル」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。

スタイルはコンポーネントに属する

Angularでは、各コンポーネントに独自のCSSを持たせることができます。デフォルトでは、これらのスタイルはスコープ化されます。つまり、そのコンポーネントのテンプレートにだけ適用され、ページの他の部分には影響しません。

インラインstyles配列

@Componentデコレーターのstyles配列を使って、スタイルをインラインで定義できます。

@Component({
  selector: "app-card",
  template: "<div class='card'>Hello</div>",
  styles: [".card { padding: 16px; border: 1px solid #ccc; }"]
})
export class CardComponent {}

外部styleUrls

一般的には、styleUrlsを使って1つ以上の外部スタイルシートを指定します。

@Component({
  selector: "app-card",
  templateUrl: "./card.component.html",
  styleUrls: ["./card.component.css"]
})
export class CardComponent {}

styleUrlの省略形

スタイルシートが1つだけの場合、最新のAngularでは単数形のstyleUrlプロパティを使用できます。

@Component({
  selector: "app-card",
  templateUrl: "./card.component.html",
  styleUrl: "./card.component.css"
})
export class CardComponent {}

スコープ化の動作

あるコンポーネントの.cardルールが、同じcardクラスを使う別のコンポーネントに漏れ出すことはありません。それぞれが分離されています。

/* card.component.css */
.card { color: navy; }
/* this navy color stays inside CardComponent only */

スコープ化の仕組み

Angularはコンポーネントの要素に一意の属性を追加し、それに一致するようCSSセレクターを書き換えます。そのため、スタイルはそのコンポーネント内にだけ適用されます。

<!-- generated markup -->
<div class="card" _ngcontent-abc>Hello</div>

/* generated css */
.card[_ngcontent-abc] { color: navy; }

スタイルは外部から侵入しない

スタイルが外部に漏れないのと同様に、外部のスタイルが意図せずコンポーネントのルールを上書きすることもほとんどありません。これにより、コンポーネントを自己完結型に保てます。

グローバルスタイル

アプリ全体に適用するスタイルには、angular.jsonに記載されているグローバルなstyles.cssを使用します。これらはスコープ化されません。

/* src/styles.css - global */
body { font-family: system-ui; }

複数のスタイルシート

コンポーネントでは、配列に複数のスタイルシートを指定して読み込むことができます。

@Component({
  selector: "app-page",
  styleUrls: ["./base.css", "./layout.css"]
})
export class PageComponent {}

classバインディングの使用

スコープ化されたスタイルは、classバインディングと組み合わせることで、条件に応じて自然にルールを適用できます。

<div class="card" [class.featured]="isFeatured"></div>

/* card.component.css */
.featured { border-color: gold; }

スコープ化の利点

スコープ化されたスタイルは、大規模なアプリでの名前の衝突を防ぎ、チームが独立して作業できるようにします。また、コンポーネントの再利用性が高まり、動作も理解しやすくなります。

クイックチェック

コンポーネントスコープのスタイルについて理解度を確認しましょう。

まとめ

コンポーネントには、styles、styleUrls、またはstyleUrlを使ってCSSを指定します。デフォルトでは、これらのルールはコンポーネント内にスコープされるため、競合を防げます。アプリ全体に適用するルールには、グローバルスタイルシートを使用します。

よくある質問

「コンポーネントスコープのスタイル」レッスンは無料ですか?

はい。「コンポーネントスコープのスタイル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。

「コンポーネントスコープのスタイル」で何を学びますか?

スタイルをコンポーネント内に限定します。 ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Angular Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「コンポーネントスコープのスタイル」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAngular Academyレッスンでコードを書いて実行できますか?

はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. コンポーネントスコープのスタイル
  2. ビューカプセル化モード
  3. HostとHost-Contextのスタイリング
  4. 動的なクラスとスタイル
← Angular Academyに戻る