# ngClass 指令
ng-class
指令用于给 HTML
元素动态绑定一个或多个 CSS
类,指令的值可以是字符串,对象,或一个数组:
- 如果是字符串,多个类名使用空格分隔。
- 如果是对象,需要使用 key-value 对,key 是一个布尔值,value 为你想要添加的类名。只有在 key 为 true 时类才会被添加。
- 如果是数组,可以由字符串或对象组合组成,数组的元素可以是字符串或对象。
<select ng-model="home">
<option value="sky">Sky</option>
<option value="tomato">Tomato</option>
</select>
<div ng-class="home">
<h1>Welcome Home!</h1>
<p>I like it!</p>
</div>
# 常见用法
<!-- 源 -->
<div ng-class="'class1 class2'"></div>
<!-- 编译结果 -->
<div ng-class="'class1 class2'" class="class1 class2"></div>
<!-- 源代码 -->
<div ng-class="'class1 class2'"></div>
<!-- 编译结果 -->
<div ng-class="[class1, class2]" class="class1 class2"></div>
<!-- 源代码 -->
<div ng-class="{'class1 class2': true, 'class3': false}"></div>
<!-- 编译结果 -->
<div ng-class="{'class1 class2': true, 'class3': false}" class="class1 class2"></div>
<!-- 源代码 -->
<div ng-class="{true: 'class1 class2', false: 'class3'}[true]"></div>
<!-- 编译结果 -->
<div ng-class="{true: 'class1 class2', false: 'class3'}[true]" class="class1 class2"></div>
# 使用变量
对于上述的常见用法,一些值可以用变量来代替。比如后两者的用法并可以如此:
<!-- 源代码 -->
<!-- JavaScript -->
<script>
// ...
$scope.booleanValue = true
// ...
</script>
<!-- HTML -->
<!-- 注意这里的类名不能使用变量 -->
<div ng-class="{'class1 class2': booleanValue, classStr: !booleanValue}"></div>
<!-- 编译结果 -->
<div
ng-class="{'class1 class2': booleanValue, 'class3': !booleanValue}"
class="class1 class2"
></div>
<!-- 源代码 -->
<!-- JavaScript -->
<script>
// ...
$scope.booleanValue = true
$scope.classArr = ['class1', 'class2']
$scope.classStr = 'class3'
// ...
</script>
<!-- HTML -->
<!-- 注意这里的 true或false 不能使用变量 -->
<div ng-class="{true: classArr, false: classStr}[booleanValue]"></div>
<!-- 编译结果 -->
<div ng-class="{true: classArr, false: classStr}[booleanValue]" class="class1 class2"></div>