单文件组件样式 RFC 为 Vue 开发人员提供了一种将组件的响应数据用作 CSS 变量的方法。
- 声明响应式数据
- 使用
v-bind
在我们的 CSS 中访问它们
<template>
<div>
<div class="text">hello</div>
</div>
</template>
<script>
export default {
data() {
return {
color: 'red'
}
}
}
</script>
<style>
.text {
color: v-bind(color);
}
</style>
更复杂的数据结构,假设我们有一个名为 font
的对象,并且其中有一个名为 weight
的属性。
<script>
export default {
data() {
return {
color: 'red',
font: {
weight: 700
}
}
}
}
</script>
<style>
.text {
color: v-bind(color);
/* 用引号括起来 */
font-weight: v-bind('font.weight');
}
</style>
注意:我们必须用引号将我们的表达式括起来。
Vue 提供了内置的响应式系统,我们只需要修改响应式中的数据,便可以动态的修改页面中的外观。
<div>
<div class="text">hello</div>
<button @click="color = 'plum'">Make Plum</button>
</div>
使用到了 CSS 变量,我们样式中的 v-bind
最终将被编译为使用 CSS var
语法和我们的新 CSS 变量。
注意:为避免继承问题,在父组件定义的 CSS 变量对其任何子组件均不可用。
如果您希望在生产环境中实现这一点,请确保检查浏览器对 CSS 变量的支持。
如果没有 CSS 变量,SFC 样式变量将无法工作,因此如果您的应用程序需要支持某些较旧的浏览器,这对您来说可能不是一个可行的选择。
以下是 CSS 变量支持情况: