【uniapp】设置公共样式,实现公共背景等

目录

1、 全局渐变背景色

2.1 创建common目录

2.2 在common下新建style和images等目录

2.3 在style下新建common-style.scss

2.4 common-style输入全局渐变颜色

2.5 引入样式

2.6 业务页面引入

2.7 展示

2、全局字体颜色

2.1 新建base-style.scss文件

2.2 设置base-style.scss

 2.3 引入base-style.scss

2.4 页面引用

2.5 展示



前言:通过uniapp四线全局背景样式等,static目录会在打包的时候必打入,新增一个目录按需导入,减少打包文件大小

1、 全局渐变背景色

2.1 创建common目录

根目录新增common目录

2.2 在common下新建style和images等目录

依据需要新增

2.3 在style下新建common-style.scss

2.4 common-style输入全局渐变颜色

view,swiper,swiper-item{
	box-sizing: border-box;
}

.pageBg{
	background: 
	linear-gradient(to bottom,transparent,#fff 400rpx),
	linear-gradient(to right,#beecd8, 20%,#F4E2D8);
	min-height: 80vh;
}

2.5 引入样式

App.vue输入

<style lang="scss">
	/*每个页面公共css */
	@import 'common/style/common-style.scss';
</style>



2.6 业务页面引入

<template>
<view class="pageBg">
	<view class="page-container">
	  <input type="text" placeholder="Enter word or phrase" v-model="word" />
	  <pronunciation :word="word" />
	</view>
</view>

</template>

<script setup>
import { ref } from 'vue';
import Pronunciation from '@/components/YouDaoModal/YouDaoModal.vue'; // 假设你的组件在 components 目录下

const word = ref(''); // 使用 ref 来创建一个响应式变量
</script>

<style scoped>
.page-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
  padding: 20px;
}

input {
  margin-bottom: 10px;
  padding: 10px;
  font-size: 16px;
  width: 80%;
  height: 80rpx;
}
</style>

2.7 展示

2、全局字体颜色

2.1 新建base-style.scss文件

在common-》style 下新建base-style.scss文件

2.2 设置base-style.scss

$brand-theme-color: #01ccb6;      // 品牌主体颜色(青绿色)  
$border-color: #e0e0e0;           // 边框颜色  
$border-color-light: #efefef;     // 边框亮色  
$text-font-color-1: #000;         // 文字主色(黑色)  
$text-font-color-2: #676767;      // 副标题颜色(深灰色)  
$text-font-color-3: #a7a7a7;      // 浅色(中灰色)  
$text-font-color-4: #e4e4e4;      // 更浅的颜色(浅灰色)

 2.3 引入base-style.scss

在uni.scss中引入base-tyle.scss

/* 引入外部 */
@import "@/common/style/base-style.scss";

2.4 页面引用

在page下页面引用(pages.json页面不行哦)

	.top-view {
		// background-color: #01ccb6;
		// color: white;
		color: $text-font-color-4;
		padding: 40rpx;
	}

2.5 展示

<think>嗯,用户问的是关于UniApp的全局主题色设置。首先,我得回想一下UniApp的相关知识。UniApp是一个使用Vue.js开发跨平台应用的框架,所以全局样式的管理应该和Vue的机制有关。不过,用户提到的是主题色,通常主题色涉及到CSS变量或者预处理器的变量,比如SCSS或者Less。 首先,全局主题色一般指的是整个应用中使用的主要颜色,比如品牌色、辅助色等。在UniApp中,可能有几种方法可以实现全局主题色的管理。一种是使用CSS变量,也就是自定义属性,在根元素定义,然后在各个组件中引用。另一种可能是使用SCSS变量,这样在编译时替换,但需要配置预处理器。 接下来需要确认UniApp是否支持CSS变量。因为UniApp基于Vue,而Vue支持CSS变量,所以可能在App.vue中定义全局的CSS变量,然后在其他组件中使用。不过要注意的是,不同平台可能会有兼容性问题,比如小程序环境是否支持CSS变量,这点可能需要查证。 另外,用户可能想要动态切换主题色,这时候可能需要结合Vue的数据响应式,或者使用Storage来保存用户选择的主题,然后动态修改CSS变量。不过动态修改可能需要使用JavaScript操作DOM,或者在页面加载时注入样式。 还有一种方法是通过修改uni-ui组件的主题色,如果用户使用了这些组件,可能需要查阅uni-ui的文档,看是否有全局配置主题色的选项。 可能需要注意的步骤包括:在App.vue中定义CSS变量,确保所有页面和组件都能继承这些变量;在写样式时使用var()引用变量;处理可能需要编译的预处理器变量,比如SCSS,需要在项目中安装相应的loader,并在uni.scss中定义变量,以便全局使用。 还需要考虑实际应用中的例子,比如定义primary-color这样的变量,然后在按钮、文字等元素中使用,这样当需要更改主题色时,只需修改根变量的值即可。此外,动态切换主题可能需要更复杂的方法,比如通过类名切换或者使用CSS-in-JS库,不过在UniApp中可能需要更简单的实现方式。 可能用户遇到的困难是如何一次修改所有页面的颜色,而不用逐个调整,所以需要强调全局变量的定义和使用方法。同时,提醒用户注意不同平台的兼容性,比如某些小程序可能不支持CSS变量,这时候可能需要回退到其他方法,或者使用预处理器变量在编译时替换。 总结下来,回答应该分步骤,先介绍CSS变量的方法,再讲SCSS变量的方法,最后提到动态切换的可能方案,并给出示例代码。同时,提醒注意事项,如平台兼容性和实际应用中的技巧。</think>在UniApp设置全局主题色,可通过以下步骤实现: ### 一、基础方案:CSS变量法 1. **定义全局变量** 在`App.vue`的`<style>`标签中定义CSS变量: ```css /* App.vue */ :root { --primary-color: #007AFF; /* 主色调 */ --secondary-color: #4CD964; /* 次色调 */ } ``` 2. **全局使用变量** 所有页面/组件通过`var()`调用: ```css .btn { background-color: var(--primary-color); color: white; } ``` ### 二、进阶方案:SCSS预处理 1. **创建uni.scss文件** 在项目根目录新建`uni.scss`: ```scss $primary-color: #007AFF; $theme-red: #DD524D; ``` 2. **全局引用样式** 任意组件中直接使用: ```scss .header { background: $primary-color; } ``` ### 三、动态切换方案 ```javascript // 通过JS修改CSS变量 function changeTheme(color) { const root = document.documentElement root.style.setProperty('--primary-color', color) } // 配合vuex持久化存储 // store/index.js export default new Vuex.Store({ state: { themeColor: '#007AFF' }, mutations: { setTheme(state, color) { state.themeColor = color uni.setStorageSync('theme', color) } } }) ``` ### 四、平台兼容注意 1. 小程序端需启用`"style-variable": true`(manifest.json) 2. H5端完美支持CSS变量 3. APP端需Android 5+ / iOS 9.2+ ### 五、最佳实践建议 1. 颜色变量命名规范: ```css --color-brand: #007AFF; /* 品牌色 */ --color-text-primary: #333; /* 主要文字 */ ``` 2. 配合uni-ui组件时: ```js // 修改uni-ui默认主题 import { setConfig } from 'uni-ui' setConfig({ color: { primary: '#yourColor' } }) ``` > 通过上述方案,可实现一次修改全局生效。建议优先使用CSS变量方案,动态主题场景配合Vuex+Storage实现持久化存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天的菠菜

一毛两毛也是动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值