Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
410 views
in Technique[技术] by (71.8m points)

vue下less全局变量换肤问题

需求:页面上一个按钮点击后能够切换皮肤;
操作:less定义了全局变量值,引用方式如下:
修改:build - utils.js

less: generateLoaders('less').concat({
  loader: 'sass-resources-loader',
  options: {
    resources: path.resolve(__dirname, '../src/assets/css/style/default.less')
  }
}),

变量的确是全局的了,但是如何才能切换。
我有两套全局变量,如图:
image.png
需要通过按钮切换这两套
default.less:

@primary-color: rgba(255,255,255,0.85); // 全局主色
@link-color: #1890ff; // 链接色
@success-color: #52c41a; // 成功色
@warning-color: #faad14; // 警告色
@error-color: #f5222d; // 错误色
@font-size-base: 14px; // 主字号
@heading-color: rgba(0, 0, 0, 0.85); // 标题色
@text-color: rgba(0, 0, 0, 0.65); // 主文本色
@text-color-secondary: rgba(0, 0, 0, 0.45); // 次文本色
@disabled-color: rgba(0, 0, 0, 0.25); // 失效色
@border-radius-base: 4px; // 组件/浮层圆角
@border-color-base: rgba(255,255,255,0.2); // 边框色
@box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // 浮层阴影


///自主设定
@font_color: rgba(255,255,255,0.85); // 字体颜色
@font_size: 14px; // 字体颜色
@border_radius: 2px;

在线等,提供有效思路或解决办法,跪谢。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
default.less
#default {
@primary-color: rgba(255,255,255,0.85);
@font-size: 14px;
.theme(
@primary-color,
@font-size)
}
red.less
#red {
@primary-color: rgba(255,255,255,0.85);
@font-size: 16px;
.theme(
@primary-color,
@font-size)
}
theme.less
import 'default.less';
import 'red.less';
.theme(@primary-color, @font-size) {
    .fuzujian-example-class {
        color: @primary-color;
        font-size: @font-size;
        .zizujian-example-class {
            color: @primary-color;
            font-size: @font-size;
        }
    }
}

项目中main.js引入theme.less,在app.vue的根位置加一个id,id为default或者red,换肤就是改变id为default或者为red.
以上面例子为例,id为default是字体是14,为red时就是16px


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...