当前位置:首页 > 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中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp安装axios

uniapp安装axios

安装axios 在uniapp项目中安装axios需要确保项目支持node_modules管理。通过npm或yarn安装axios: npm install axios # 或 yarn add a…

uniapp开发电视应用

uniapp开发电视应用

开发环境准备 确保已安装HBuilderX最新版本,这是uniapp官方推荐的开发工具。安装Node.js环境,用于依赖管理和打包构建。准备Android Studio或Xcode用于调试和打包TV应…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp隐藏右侧滚动条

uniapp隐藏右侧滚动条

隐藏右侧滚动条的方法 在UniApp中隐藏右侧滚动条可以通过CSS样式实现,适用于H5、小程序等平台。以下是几种常见的方法: 全局样式设置 在App.vue的全局样式中添加以下CSS代码,适用于所有…

uniapp 摇骰子

uniapp 摇骰子

uniapp 摇骰子实现方法 页面布局 在 pages 目录下创建骰子页面(如 dice.vue),使用 view 和 image 组件构建骰子界面。骰子图片可通过静态资源或网络地址加载。…