美文网首页
css变量以及在vue中使用(个人笔记)

css变量以及在vue中使用(个人笔记)

作者: kevision | 来源:发表于2020-08-18 21:34 被阅读0次

本文参考:Vue超好玩的新特性:在CSS中使用JS变量

以前做项目的时候经常会这么想:要是我在data里面定义的变量也能在CSS里面用那该多好啊!

<template>
  <h1>{{ color }}</h1>
</template>

<script>
export default {
  data () {
    return {
        color: 'red'
    }
  }
}
</script>

<style>
h1 {
  color: this.color;
}
</style>

当然,想想也知道不可能,JS和CSS隶属不同上下文,CSS哪来的this呢?

什么是CSS变量

在JS里(不止JS,所有语言都差不多),变量有如下几个特性:

  • 声明
  • 使用
  • 作用域

为了方便理解,咱们通过用JS的方式来类比:

var color = 'red';

在CSS中等同于:

--color: red; // CSS的符号就是两个减号--

使用

CSS在使用变量的时候用到了一个函数叫var():

CSS:

h1 {
    color: var(--color);
}

作用域

body {
    --color: red;
}

h1 {
    color: var(--color); /** 这里获取到的是全局声明的变量,值为red **/
}

div {
    --color: blue;
    color: var(--color); /** 这里获取到的是局部声明的变量,值为blue **/
}

也就是说,变量的作用域就是它所在的选择器的有效范围。

在vue中的变量

那么怎样才能在vue3的<style>中使用<script>里声明的变量呢?

首先我们先创建个支持vue3的vite项目:

npm init vite-app vars

然后进入到该文件夹安装依赖:

cd vars

npm i

然后创建一个组件,组件型式长这样:

<template>
  <h1>{{ color }}</h1>
</template>

<script>
export default {
  data () {
    return {
      color: 'red'
    }
  }
}
</script>

<style vars="{ color }">
h1 {
  color: var(--color);
}
</style>

首先要在<style>标签中写个vars="{}",再在大括号里写上你在data中声明过的值。
多个变量之间使用逗号进行分隔:

<script>
export default {
  data () {
    return {
      border: '1px solid black',
      color: 'red'
    }
  }
}
</script>
<style vars="{ border, color }" scoped>
h1 {
  color: var(--color);
  border: var(--border);
}
</style>

而且这个变量是响应式的,动态改变<script>标签中的this.color值会引起视图的变化。

相关文章

网友评论

      本文标题:css变量以及在vue中使用(个人笔记)

      本文链接:https://www.haomeiwen.com/subject/eqlhjktx.html