vue中v-bind绑定class与style的各种写法
写法
- class对象写法
- class数组写法
- style对象写法
- style数组写法
class对象写法
<script setup lang="ts">
import { ref } from 'vue'
let isActive = ref(true)
let classObj = ref({
active: true,
title: false
})
const onBtn = () => {
isActive.value = !isActive.value
}
const getClassObj = ()=>{
return {
active: true,
title: true
}
}
</script>
<template>
<div>
<button @click="onBtn">切换-isActive:{{isActive}}</button>
<div :class="{ active: isActive }">呵呵呵呵</div>
<div :class="{active: isActive, title: true}">呵呵呵呵</div>
<div class="abc cba" :class="{active: isActive, title: true}">呵呵呵呵</div>
<div class="abc cba" :class="classObj">呵呵呵呵</div>
<div class="abc cba" :class="getClassObj()">呵呵呵呵</div>
</div>
</template>
<style scoped lang="scss">
.active{color: red;}
</style>
class数组写法
<script setup lang="ts">
import { ref } from 'vue'
let isActive = ref(true)
let title = 'aaa'
const onBtn = () => {
isActive.value = !isActive.value
}
</script>
<template>
<div>
<button @click="onBtn">切换-isActive:{{ isActive }}</button>
<div :class="['abc', title]">哈哈哈哈</div>
<div :class="['abc', title, isActive ? 'active': '']">哈哈哈哈</div>
<div :class="['abc', title, {active:isActive , ccc:true}]">哈哈哈哈</div>
</div>
</template>
<style scoped lang="scss">
.active {color: red;}
</style>
style对象写法
<script setup lang="ts">
let finalColor = 'blue'
let finalStyleObj = {
'font-size': '50px',
fontWeight: 700,
backgroundColor: 'red'
}
const getClassObj = ()=>{
return {
'font-size': '50px'
}
}
</script>
<template>
<div>
<div :style="{color: finalColor, 'font-size': '30px'}">哈哈哈哈</div>
<div :style="{color: finalColor, fontSize: '30px'}">哈哈哈哈</div>
<div :style="{color: finalColor, fontSize: finalFontSize + 'px'}">哈哈哈哈</div>
<div :style="finalStyleObj">呵呵呵呵</div>
<div :style="getFinalStyleObj()">呵呵呵呵</div>
</div>
</template>
<style scoped lang="scss">
.active {color: red;}
</style>
style数组写法
<script setup lang="ts">
let style1Obj = { color: 'blue', fontSize: '30px' }
</script>
<template>
<div :style="[{color:'red'},style1Obj]">哈哈哈</div>
</template>