Vue学习笔记 - template中关于样式的常见用法

173 阅读1分钟

active-class

用于路由上

<router-link to="/xxx" active-class="selected"></router-link>

进入此路由时,active-class被激活,'selected'会成为真正的class。

动态绑定class

  • &&逻辑(或?:表达式)
<div :class="表达式1 && className1"></div>
  • 写为对象形式:
<div :class="{className1: 表达式1, className2: 表达式2}"></div>

其含义为,当表达式为真时,添加相应的 class

scoped 模式

scoped 模式,样式仅在当前组件有效。

deep

在 scoped 模式下,还可以用 deep 模式,表示样式也能作用到当前组件用到的后代组件上。

<style scoped lang="scss">
    ::v-deep div{
        /* ... */
    }
</style>

这种做法也不太严谨,推荐结合使用以下方法。

从外部给组件中的元素绑定class(荐!)

使用组件Son时希望给组件内的某个元素设置 class 属性,可用props。

有一种约定俗成的方法是以props classPrefix作为元素class的前缀:

// Son 组件内部
<template>
	<div>
        <div :class="classPrefix && `${classPrefix}-div1`">1</div>
        <div :class="classPrefix && `${classPrefix}-div2`">2</div>
        <div>3</div>
        <div>4</div>
    </div>
</template>

<script>
	export default {
        props: ['classPrefix']
    }
</script>

使用组件时,仅需传入一个classPrefix,组件内的每个元素都可以绑定自己专有的class。