nuxt项目中引用less/scss全局变量

nuxt项目中有些样式需要经常使用,并且未来有可能会改,比如主题色@theme-color,所以希望在一个地方定义后,后面直接引用变量即可。但是正常使用时,less的变量是不能跨文件使用的,下面使用@nuxtjs/style-resources来把变量注入到项目中的所有文件。

1、安装less依赖

npm install less less-loader --save

2、安装style-resources

npm install @nuxtjs/style-resources --save

如果是yarn如下

yarn add less-loader less
yarn add @nuxtjs/style-resources

3、配置nuxt.config.js,添加@nuxtjs/style-resources模块和全局变量文件

export default { 
    ...
 modules: [
    '@nuxtjs/style-resources'
  ],
  styleResources: {
    less: '@/assets/vars.less'
  }
    ...
}

less有多个,可以使用数组,即less:[xxx.less,yyy.less]

然后全项目都可以使用vars.less模块定义的变量了

例如:

vars.less

@theme-color: #c91c1c;

index.vue

<template>
  <section>index</section>
</template>

<script>
export default {
  name: 'index'
}
</script>

<style scoped lang="less">
    section{
        color: @theme-color;
    }
</style>

css.css

.theme-color{
  color: @theme-color;
}

其他

scss如下配置
export default {
  modules: ['@nuxtjs/style-resources'],
  styleResources: {
    scss: [
      '@/assets/vars1.scss',
      '@/assets/vars2.scss' 
      ]
  }
}
来个全的:
export default {
  modules: [
    '@nuxtjs/style-resources',
  ], 
  styleResources: {
   sass: [],
   scss: [],
   less: [],
   stylus: []
  }
}

使用css3的var()函数

var() 函数用于插入自定义的属性值,webkit内核浏览器很好用,但是IE15才支持。使用它可以不用安装依赖了

语法
var(custom-property-name, value)
描述
custom-property-name必需。自定义属性的名称,必需以 – 开头。
value可选。备用值,在属性不存在的时候使用。
使用:root伪类来使变量全局可用
:root{
    --theme-color: #c91c1c;
}
然后就可以使用了
.section{
    color:var(--theme-color)
}
还可以使用js动态改变它
function changeColor(color = 'blue') {
	document.documentElement.style.setProperty("--theme-color",color);
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值