绑定布尔值
可以通过一个布尔值变量来动态决定一个标签中的类名是否存在:
html
<div class=“first” :class="{ active: isActive }"></div>
let isActive = ref(true)
渲染为-->
<div class="first active"></div>绑定对象、计算属性
也可以传一个对象(或者是计算属性),其中为 true 的部分会被渲染到当前的标签上去。
ts
const classObject = computed(() => ({
active: isActive.value && !error.value,
'text-danger': error.value && error.value.type === 'fatal'
}))
<div :class="classObject"></div>绑定数组
以数组的形式传参,其中的 string 属性会作为类名渲染。
ts
const activeClass = ref('active')
const errorClass = ref('text-danger')
<div :class="[activeClass, errorClass]"></div>类的条件渲染
使用三元运算符:
html
<div :class="[isActive ? activeClass : '', errorClass]"></div>嵌套对象:
html
<div :class="[{ [activeClass]: isActive }, errorClass]"></div>如果 isActive 的值为真,那么 activeClass 的值将作为类名被渲染。这里使用 [] 是 JS 的对象字面量的属性名,其值由相应变量的值决定。
组件上 class 的渲染
在父组件上使用子组件的标签,可以在其中增加新的类名,最终的子组件渲染结果会合并在父组件上添加的类名。
绑定内联样式
可以在标签上通过 style 状态直接写 CSS,具体的值可以绑定变量、表达式,当然最好绑定一个样式对象或者对应的计算属性
ts
const styleObject = reactive({
color: 'red',
fontSize: '30px'
})
<div :style="styleObject"></div>兼容性
自动前缀 如果当前 CSS 属性值不被支持,框架会尝试加前缀以找到支持的属性名称。 样式多值
html
<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>浏览器会选择最后一个被支持的值,在这里就是 flex。