Angular には、条件付き/動的に CSS スタイルを操作するための組み込みディレクティブが多数用意されています。
- ng-class - CSS スタイルのセットが静的/事前にわかっている場合に使用
- ng-style - スタイルの値が動的に変化する可能性があるため、CSS クラスを定義できない場合に使用します。スタイル値のプログラム可能な制御を考えてみてください。
- ng-showおよびng-hide - 何かを表示または非表示にするだけでよい場合に使用します (CSS を変更します)
- ng-if - バージョン 1.1.5 の新機能。単一の条件のみをチェックする必要がある (DOM を変更する) 場合は、より冗長な ng-switch の代わりに使用します。
- ng-switch - いくつかの相互に排他的な ng-show を使用する代わりに使用します (DOM を変更します)
- ng-disabledおよびng-readonly - フォーム要素の動作を制限するために使用し
- ng-animate - バージョン 1.1.4 の新機能、CSS3 トランジション/アニメーションの追加に使用
通常の「Angular の方法」では、モデル/スコープ プロパティをユーザー入力/操作を受け入れる (つまり、ng-model を使用する) UI 要素に結び付け、そのモデル プロパティを上記の組み込みディレクティブの 1 つに関連付けます。
ユーザーが UI を変更すると、Angular はページ上の関連する要素を自動的に更新します。
Q1 は ng-class の良い例のように思えます -- CSS スタイリングはクラスでキャプチャできます。
ng-classは、次のいずれかに評価される必要がある「式」を受け入れます。
- スペースで区切られたクラス名の文字列
- クラス名の配列
- クラス名からブール値へのマップ/オブジェクト
pending-delete
いくつかの配列モデルで ng-repeat を使用してアイテムが表示され、アイテムのチェックボックスがチェックされているときにクラスを適用したいと仮定します。
<div ng-repeat="item in items" ng-class="{'pending-delete': item.checked}">
... HTML to display the item ...
<input type="checkbox" ng-model="item.checked">
</div>
上記では、ng-class 式タイプ #3 - クラス名からブール値へのマップ/オブジェクトを使用しました。
Q2 は ng-style の良い例のように思えます -- CSS スタイリングは動的であるため、このためのクラスを定義することはできません。
ng-styleは、次のように評価する必要がある「式」を受け入れます。
- CSS スタイル名から CSS 値へのマップ/オブジェクト
人為的な例として、ユーザーが背景色の texbox に色の名前を入力できるとします (jQuery カラー ピッカーの方がはるかに優れています)。
<div class="main-body" ng-style="{color: myColor}">
...
<input type="text" ng-model="myColor" placeholder="enter a color name">
上記の両方を
フィドルします。
フィドルにはng-showとng-hideの例も含まれています。チェックボックスをオンにすると、背景色がピンク色に変わるだけでなく、テキストが表示されます。テキストボックスに「red」と入力すると、div が非表示になります。