当前位置:首页 > uni-app

uniapp主题更换

2026-02-05 22:51:31uni-app

使用CSS变量实现主题切换

uni.scss文件中定义全局CSS变量:

:root {
  --primary-color: #007AFF;
  --bg-color: #FFFFFF;
  --text-color: #333333;
}

.dark-theme {
  --primary-color: #0A84FF;
  --bg-color: #1C1C1E;
  --text-color: #F2F2F7;
}

在页面样式中使用这些变量:

.page {
  background-color: var(--bg-color);
  color: var(--text-color);
}

.button {
  background-color: var(--primary-color);
}

动态切换主题类名

通过JavaScript动态切换HTML元素的类名:

// 切换主题
function toggleTheme() {
  const htmlEl = document.documentElement
  if (htmlEl.classList.contains('dark-theme')) {
    htmlEl.classList.remove('dark-theme')
    uni.setStorageSync('theme', 'light')
  } else {
    htmlEl.classList.add('dark-theme')
    uni.setStorageSync('theme', 'dark')
  }
}

// 初始化主题
function initTheme() {
  const savedTheme = uni.getStorageSync('theme') || 'light'
  if (savedTheme === 'dark') {
    document.documentElement.classList.add('dark-theme')
  }
}

使用uni-ui主题组件

安装uni-ui主题插件:

npm install @dcloudio/uni-ui

在页面中使用主题组件:

<template>
  <uni-theme>
    <uni-nav-bar title="标题" />
    <uni-card title="卡片标题">卡片内容</uni-card>
  </uni-theme>
</template>

适配系统主题

监听系统主题变化:

uni.onThemeChange(function(res) {
  if (res.theme === 'dark') {
    document.documentElement.classList.add('dark-theme')
  } else {
    document.documentElement.classList.remove('dark-theme')
  }
})

主题相关配置

pages.json中配置全局样式:

{
  "globalStyle": {
    "navigationBarTextStyle": "@navigationBarTextStyle",
    "navigationBarTitleText": "主题示例",
    "backgroundColor": "@backgroundColor",
    "backgroundTextStyle": "@backgroundTextStyle"
  }
}

创建主题配置文件theme.json

{
  "light": {
    "@navigationBarTextStyle": "black",
    "@backgroundColor": "#F7F7F7",
    "@backgroundTextStyle": "dark"
  },
  "dark": {
    "@navigationBarTextStyle": "white",
    "@backgroundColor": "#1A1A1A",
    "@backgroundTextStyle": "light"
  }
}

uniapp主题更换

标签: 主题uniapp
分享给朋友:

相关文章

uniapp开发

uniapp开发

uniapp开发简介 uniapp是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的跨…

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp 极光推送

uniapp 极光推送

uniapp 集成极光推送的方法 在 uniapp 中集成极光推送,需要使用官方提供的插件或自行封装原生模块。以下是具体实现方式: 使用官方插件 在 uni-app 插件市场搜索「极光推送」插件,…

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通…