nuxt项目中有些样式需要经常使用,并且未来有可能会改,比如主题色@theme-color,所以希望在一个地方定义后,后面直接引用变量即可。但是正常使用时,less的变量是不能跨文件使用的,下面使用@nuxtjs/style-resources来把变量注入到项目中的所有文件。
npm install less less-loader --save
npm install @nuxtjs/style-resources --save
如果是yarn如下
yarn add less-loader less
yarn add @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>indexsection>
template>
<script>
export default {
name: 'index'
}
script>
<style scoped lang="less">
section{
color: @theme-color;
}
style>
css.css
.theme-color{
color: @theme-color;
}
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: []
}
}
var() 函数用于插入自定义的属性值,webkit内核浏览器很好用,但是IE15才支持。使用它可以不用安装依赖了
var(custom-property-name, value)
值 | 描述 |
---|---|
custom-property-name | 必需。自定义属性的名称,必需以 – 开头。 |
value | 可选。备用值,在属性不存在的时候使用。 |
:root{
--theme-color: #c91c1c;
}
.section{
color:var(--theme-color)
}
function changeColor(color = 'blue') {
document.documentElement.style.setProperty("--theme-color",color);
}