当前位置:首页 > 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元素的类名:

uniapp主题更换

// 切换主题
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

在页面中使用主题组件:

uniapp主题更换

<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 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

uniapp中如何引用echarts

uniapp中如何引用echarts

在uniapp中引用echarts uniapp中引用echarts可以通过原生方式或第三方插件实现,以下是具体方法: 使用原生echarts 安装echarts依赖 在项目根目录下执行命令:…

美颜uniapp

美颜uniapp

美颜功能在UniApp中的实现方法 在UniApp中实现美颜功能,可以通过以下几种方式: 使用第三方SDK或插件 腾讯云美颜SDK:提供直播推流场景下的美颜、滤镜、贴纸等功能,支持UniApp集成…

uniapp 成功案例

uniapp 成功案例

成功案例概览 UniApp 凭借跨平台开发能力,已被多个行业采用,涵盖电商、社交、教育、政务等领域。以下为部分典型案例: 京东拼购 京东拼购(现为“京喜”)采用 UniApp 开发,实现微信小程序、…

uniapp学习书籍

uniapp学习书籍

推荐书籍 《uni-app跨平台开发与应用从入门到实践》:该书详细介绍了uni-app的基础知识和开发技巧,适合初学者和进阶开发者。内容涵盖uni-app的组件、API、路由、状态管理等核心概念,并通…

uniapp 服务文件

uniapp 服务文件

uniapp 服务文件的概念 在 uniapp 中,服务文件通常指用于封装业务逻辑、接口请求或通用功能的 JavaScript 文件。这类文件通常存放在项目的 common 或 utils 目录下,便…