1. 使用 SCSS / LESS 预处理器
uni-app
支持 SCSS 和 LESS 预处理器。
1、变量创建
scss
$primary-color: #007aff;
$font-size: 16px;
.view {
color: $primary-color;
font-size: $font-size;
}
less
@primary-color: #007aff;
@font-size: 16px;
.view {
color: @primary-color;
font-size: @font-size;
}
2、变量使用
在 uni-app
中,vue
文件的 <style>
标签可以添加 lang="scss"
或 lang="less"
<style lang=”scss”>
$primary-color: #007aff;
.view {
color: $primary-color;
}
</style>
3、全局使用
3.1)在 uni.scss 中全局定义
uni-app
提供了 uni.scss
作为全局样式文件,可以在这里定义 SCSS
变量。
uni.scss
会自动引入到所有 vue
组件和页面,不需要手动 @import
。
3.2)使用 @import 手动引入
如果你希望手动管理多个 SCSS 文件,可以创建一个全局 SCSS 文件并 @import
global.scss
$primary-color: #007aff;
$font-size: 16px;
<style lang=”scss”>
@import “@/common/common.scss”;
.view {
color: $primary-color;
}
</style>
适用于需要分模块管理多个 SCSS
变量的项目。
3.3)使用 prependData
在 vue.config.js
自动引入
如果你的 uni-app
是 Vue CLI
版本,你可以在 vue.config.js
中配置 scss
全局变量:
module.exports = {
css: {
loaderOptions: {
scss: {
additionalData: `@import “@/common/common.scss”;`
}
}
}
};
2. 使用 CSS3 变量(:root 或 page 级别变量)
如果你希望使用 CSS 原生变量(CSS 变量),可以这样定义:
:root {
–primary-color: #007aff;
–font-size: 16px;
}
.view {
color: var(–primary-color);
font-size: var(–font-size);
}
或者在 page
作用域中定义:
page {
–primary-color: #007aff;
}
.view {
color: var(–primary-color);
}
方法对比
方式 | 适用场景 | 是否支持动态修改 | 兼容性 |
---|---|---|---|
SCSS / LESS 变量 | 全平台(编译时确定) | ❌ 不支持 | 全部 |
CSS 变量(var(--xx) ) |
H5、APP | ✅ 支持(JS 代码修改) | 现代浏览器,部分旧版 iOS 不支持 |
如果你的项目支持 SCSS/LESS,推荐使用 SCSS/LESS 变量进行管理。
如果需要动态修改主题色,推荐使用 CSS3
变量。