В веб-разработке мы часто сталкиваемся с необходимостью динамического изменения стиля элемента, как это реализовать во Vue? Официальный сайт на самом деле очень подробный, синтаксис объектов, синтаксис массивов и т. д. Я подытожил три способа, которые лично я использую в развитии.
1.класс, троичное выражение
Динамическое переключение между двумя стилями на основе троичного выражения
:class="[item.isPlaying ? 'playing' : '', 'drum-item’]"
2.:style="xxxxx", где xxx может быть функцией или вычисляемым свойством.
функция:
:style="handleStyle(second)”
......
handleStyle(deg) {
return { transform: "rotate(" + deg + "deg)" };
},
Вычисляемые свойства:
:style=“imgStyle”
......
imgStyle() {
return {
padding: this.spacing + "px",
};
},
Эти два метода очень похожи, разница в том, что при использовании метода представление обновляется, и функция снова пересчитывает значение. Вычисляемые свойства будут кэшировать предыдущее значение. Если нет изменений, оно не будет вычислено, а предыдущее значение будет возвращено напрямую.
3. Используйте переменные CSS для динамического изменения стилей, наблюдая за свойствами
Например, теперь у меня есть такая переменная css
<input id="base" type="color" name="base" v-model="base" />
<span class="spantext">VUE.JS</span>
data: ()=> {
return {
base: '#ffff'
}
}
.spantext {
color: var(--color);
}
Теперь слушайте изменения базового значения, наблюдая за свойством
watch: {
base: function(newValue, oldValue) {
this.updateColor();
}
},
updateColor() {
this.$el.style.setProperty("--color", this.base);
}
В настоящее время обобщены три вида методов, если позже будут обнаружены новые методы, запишите их снова.