要点
- 使用动态属性
使用class
<p:class="{black:isBlack,yellow:isYellow}">使用class</p>
使用class数组
<p:class="[black,yellow]">使用class 数组</p>
使用style
<p:style="styleData">使用样式</p>
-
样式中的属性要使用驼峰式写法
styleData: { fontSize: '40px', // 两个单词连接的话转换为驼峰式 color: 'red', backgroundColor: '#ccc' // 两个单词连接的话转换为驼峰式 }
完整代码
<template>
<div>
<p :class="{ black: isBlack, yellow: isYellow }">使用 class</p>
<p :class="[black, yellow]">使用 class (数组)</p>
<p :style="styleData">使用 style</p>
</div>
</template>
<script>
export default {
data() {
return {
isBlack: true,
isYellow: true,
black: 'black',
yellow: 'yellow',
styleData: {
fontSize: '40px', // 两个单词连接的话转换为驼峰式
color: 'red',
backgroundColor: '#ccc' // 两个单词连接的话转换为驼峰式
}
}
}
}
</script>
<style scoped>
.black {
background-color: #999;
}
.yellow {
color: yellow;
}
</style>
结果
实际项目中的应用
默认activeMenu为-1 默认样式为 activeMenuStyle
如果 点击了别的页签 样式变为 " ‘’ 和 activeMenuItem
源码
<div
:class="[activeMenu == -1 ? activeMenuStyle : '', activeMenuItem]"
@click="menuClicked()"
>
已选 ({{ liked }})
</div>
```html
data() {
return {
dragIndex: "",
activeMenu: -1,
activeMenuStyle: [
"activeMenuStyle",
"theme-main-bdr",
"theme-main-bg",
"light10",
],
activeMenuItem: ["activeMenuItem", "theme-main-hover-bg", "light10"],
}
}
<style lang="less" scoped>
.activeMenuStyle{
border-left: 3px solid;
}
.activeMenuItem{
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 0 12px 20px;
}
.activeMenuItem:hover{
cursor:pointer;
}
</style>