Привязка классов и стилей¶
Используйте привязки классов и стилей для добавления и удаления имен классов CSS из атрибута class
элемента и для динамической установки стилей.
Предварительные условия¶
Привязка к одному CSS class
¶
Чтобы создать привязку к одному классу, введите следующее:
[class.sale]="onSale"
Angular добавляет класс, когда связанное выражение onSale
истинно, и удаляет класс, когда выражение ложно — за исключением undefined
. Дополнительную информацию смотрите в делегирование стилей.
Привязка к нескольким классам CSS¶
Чтобы привязать несколько классов, введите следующее:
[class]="classExpression"
Выражение может быть одним из:
- Строка имен классов, ограниченная пробелами.
- Объект с именами классов в качестве ключей и истинными или ложными выражениями в качестве значений.
- Массив имен классов.
При использовании объектного формата Angular добавляет класс, только если его связанное значение истинно.
При использовании любого объектоподобного выражения — такого как object
, Array
, Map
или Set
— идентификатор объекта должен измениться, чтобы Angular обновил список классов. Обновление свойства без изменения идентичности объекта не имеет эффекта.
Если существует несколько привязок к одному и тому же имени класса, Angular использует "style precedence", чтобы определить, какую привязку использовать.
В следующей таблице приведен синтаксис привязки класса.
Тип привязки | Синтаксис | Тип инпута | Пример значений |
---|---|---|---|
Привязка к одному классу | [class.sale]="onSale" | boolean | undefined | null | true , false |
Многоклассовая привязка | [class]="classExpression" | string | "my-class-1 my-class-2 my-class-3" |
Многоклассовая привязка | [class]="classExpression" | Record<string, boolean | undefined | null> | {foo: true, bar: false} |
Многоклассовая привязка | [class]="classExpression" | Array<string> | ['foo', 'bar'] |
Привязка к одному стилю¶
Чтобы создать привязку к одному стилю, используйте префикс style
, за которым следует точка и имя стиля CSS.
Например, чтобы установить стиль width
, введите следующее: [style.width]="width"
.
Angular устанавливает свойство в значение связанного выражения, которое обычно является строкой. По желанию вы можете добавить расширение единицы, например em
или %
, которое требует числового типа.
-
Чтобы написать стиль в тире, введите следующее:
1
<nav [style.background-color]="expression"></nav>
-
Чтобы написать стиль в camelCase, введите следующее:
1
<nav [style.backgroundColor]="expression"></nav>
Привязка к нескольким стилям¶
Чтобы переключить несколько стилей, привяжитесь к атрибуту [style]
— например, [style]="styleExpression"
. Выражение styleExpression
может быть одним из:
- Строковый список стилей, например,
ширина: 100px; высота: 100px; background-color: cornflowerblue;
. - Объект с именами стилей в качестве ключей и значениями стилей в качестве значений, например
{width: '100px', height: '100px', backgroundColor: 'cornflowerblue'}
.
Обратите внимание, что привязка массива к [style]
не поддерживается.
При привязке [style]
к выражению объекта, идентификатор объекта должен измениться, чтобы Angular обновил список классов. Обновление свойства без изменения идентичности объекта не имеет эффекта.
Пример связывания в одном и нескольких стилях¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Если существует несколько привязок к одному и тому же атрибуту стиля, Angular использует "styling precedence", чтобы определить, какую привязку использовать.
В следующей таблице приведен синтаксис привязки стиля.
Тип привязки | Синтаксис | Тип входа | Пример входных значений |
---|---|---|---|
Привязка к одному стилю | [style.width]="width" | string | undefined | null | "100px" |
Привязка к одному стилю | [style.width.px]="width" | number | undefined | null | 100 |
Привязка к многим стилям | [style]="styleExpression" | string | "width: 100px; height: 100px" |
Привязка к многим стилям | [style]="styleExpression" | Record<string, string | undefined | null> | {width: '100px', height: '100px'} |
Приоритет стилей¶
У одного элемента HTML список классов CSS и значения стилей могут быть привязаны к нескольким источникам (например, привязка к хосту из нескольких директив).
Что дальше¶
9.05.2022