使用样式绑定设置 scss 变量

Posted

技术标签:

【中文标题】使用样式绑定设置 scss 变量【英文标题】:Using style bind to set scss variables 【发布时间】:2018-10-27 05:26:44 【问题描述】:

我有一个 Vue 组件,我想使用传入的属性对其进行样式设置。

最终,我想根据传入组件的颜色来设置全局 scss 变量。

我已经创建了我正在尝试做的事情的简化版本,但 :style 没有按照我希望的方式设置变量。

这可能吗/我应该怎么做?

<template>
  <div id="app">
    <p :style=" $backgroundColor: 'green' "> message </p>
  </div>
</template>

<style>
  $backgroundColor: red;

  p 
    background: $backgroundColor;
  

</style>

https://jsfiddle.net/50wL7mdz/335379/

【问题讨论】:

您应该考虑使用 css 类,而不是添加内联样式,并更改它而不是内联样式。 @Adriano 我一直在尝试类似的方法,但无法找到更改变量的方法:jsfiddle.net/801nd1vy/2 不可能。 SCSS 是供 Sass 编译器读取的。您不能将模板/javascript 中的值从 Vue 传递到 Sass 编译器。 【参考方案1】:

这可能对你有帮助

$backgroundColor: red !default;
p 
  $backgroundColor: green; // you can set any color here
  background: $backgroundColor;

更新小提琴here

【讨论】:

感谢您的回复,不幸的是它不起作用。该变量仅针对该 p 标签设置,这与拥有全局变量的原因背道而驰。我在下面的小提琴中演示过:jsfiddle.net/50wL7mdz/335389

以上是关于使用样式绑定设置 scss 变量的主要内容,如果未能解决你的问题,请参考以下文章

在 React 组件中使用 css/scss 变量作为内联样式

如何使用环境变量在 Nuxt 中动态导入 SCSS 样式表

:root CSS 变量未设置为元素样式

scss 文本样式基础变量和mixin重用它

scss 文本样式基础变量和mixin重用它

如何在组件样式中预加载变量