需求

最近涉及到的一个需求是——用户可更换页面风格,因此,查了一些资料后,写一下Ionic更换主题方案

方案

动态改变根标签类名,比如亮色风格时,class="light",比如暗色风格时,class="dark"

步骤

1.在 src/theme 文件夹下,新建两种不同风格

light.theme.scss

dark.theme.scss

2.在切换事件发生时,动态改变类名,因此,我们需要先写一个服务,用于初始化值接收传入的新值返回值

① 执行命令,创建setting服务
ionic g provider settings

② setting.ts

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import {BehaviorSubject} from "rxjs/Rx";@Injectable()
export class SettingsProvider {private theme:BehaviorSubject<String>;constructor() {//默认初始值this.theme = new BehaviorSubject('dark-theme');}setActiveTheme(val){//新值this.theme.next(val);}getActiveTheme() {//观察return this.theme.asObservable();}
}

BehaviorSubject:继承自subject,发射observable数据

3.在页面中注入服务

home.html

<ion-content padding><p text-center>I shine at night and glow at day.</p><button ion-button full icon-left (click)="toggleAppTheme()"><ion-icon  name="bulb"></ion-icon>Toggle Theme</button>
</ion-content>

home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {SettingsProvider} from "../../providers/settings/settings";@Component({selector: 'page-home',templateUrl: 'home.html'
})
export class HomePage {selectedTheme:String;constructor(public navCtrl: NavController,private settings:SettingsProvider) {//订阅可观察者对象this.settings.getActiveTheme().subscribe(val=> this.selectedTheme = val);}toggleAppTheme() {//切换事件发生时if (this.selectedTheme === 'dark-theme') {this.settings.setActiveTheme('light-theme');} else {this.settings.setActiveTheme('dark-theme');}}}

4.同时,在根目录文件中注入服务,从而动态更换根标签类名

app.html

<ion-nav [root]="rootPage" [class]="selectedTheme"></ion-nav>
<!--绑定class名-->

app.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';import { HomePage } from '../pages/home/home';
import {SettingsProvider} from "../providers/settings/settings";
@Component({templateUrl: 'app.html'
})
export class MyApp {rootPage:any = HomePage;selectedTheme: String;constructor(platform: Platform,statusBar: StatusBar,splashScreen: SplashScreen,private settings:SettingsProvider) {this.settings.getActiveTheme().subscribe(val=> this.selectedTheme = val)}
}

5.效果图

参考:
dynamic-theming

Ionic 更换主题风格方案相关推荐

  1. 【sublime】安装插件、主题风格、下载、安装一步到位

    作为一名前端开发的妹子,前端代码编辑器我一般是超喜欢用notepad++的,但最近迷上了sublime,因为它的用户界面太美观啦!所以今天分享下sublime的下载.安装.安装插件以及更换主题风格.赶 ...

  2. 为你的Android Studio更换好看的主题风格

    为你的Android Studio更换好看的主题风格 https://blog.csdn.net/Likianta/article/details/78701481 1. 访问主题包下载网站Color ...

  3. 一键换肤--动态更换主题颜色风格

    基于前一段时间项目具有换肤需求的功能,几经预研学习换肤功能效果,网上的资源很多,最初看到是网易换肤的酷炫效果,今天得空打算写一篇关于换肤功能的文章,项目无需重启Activity的就可以实现无缝换肤切换 ...

  4. 【源码共享】我花2小时写了微信官网的响应式布局HTML+CSS 换成旅行主题风格更炫酷了

    微信官网仿写效果 ↑ 移动端响应式效果 ↑ 微信官网首页,简约干净,能学习写好这个首页,就能掌 握HTML网页设计前端盒子的布局.嵌套,及css效果的 使用... 微信官网首页主要有以下几个需要关注的 ...

  5. 系统主题修改桌面嵌入html,更换主题桌面主题 Win7桌面动态主题怎么更换

    Win10怎么更换主题,win10怎么更换桌面背景 Win10系统更换主题方法 在桌面空白区域点击右键,选择"个性化". 选择你喜欢的主题,点击"下载".下载后 ...

  6. 可以在xmind上同时有两个大主题吗_教程|如何自定义主题风格?

    「风格编辑器」功能终于在 XMind: ZEN 2020 上线!有了「风格编辑器」,你可以自由发挥创意,创造独具个人特色的思维导图,更可以赋予颜色和形状以特殊意义,建构专属的思维符号体系. 自定义主题 ...

  7. miui主题风格_一种android系统换肤功能的设计,董红光:MIUI主题风格.pdf

    MIUI主题风格主题风格主题风格主题风格 一种Android系统换肤功能的设计思路 董红光 2/29/2012 "主题"是什么 ? Symbian的"主题" A ...

  8. 联想微型计算机如何更改主题,联想vibe怎么更换主题 联想vibe主题更换方法【图文】...

    一个好看的手机主题可以给并不漂亮的外观增加点缀性的功能,也可以给您的使用上,带来前所未有的方便.每一种主题的菜单功能都是不一样的,有的字体不一样,有的颜色图案不一样,每一种带来的都是不同的风格.联想v ...

  9. 2020版本IDEA怎样下载和导入好看的代码主题风格【图文】详细

    1.首先你得去网站上下载IDEA主题,推荐这个下载网站,当然你也可以去其他网站上下载主题的. 地址:http://www.soft-hub.cn/idea/list.html?page=2 对了,这个 ...

最新文章

  1. AI 算法给手画线稿自动上色指南来了
  2. CSS 最核心的几个概念
  3. python是c语言写的吗-C语言是学python的基础吗?
  4. 1-1-2 交叉编译工具链
  5. gbdt 算法比随机森林容易_用Python实现随机森林算法
  6. @Mock与@InjectMocks的区别
  7. 336计算机考研怎么做到啊,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
  8. json转excel_如何快速把json数据转到excel表格,方便个人查看
  9. 简述计算机通信网络的技术指标,计算机网络基础知识之数据通信中的主要技术指标...
  10. 10年腾讯技术专家有话对你说
  11. edxp显示未安装_EPLAN因缺少加密狗驱动而无法安装解决方案
  12. 英伟达显卡不同架构_【英伟达NVIDIA显卡GPU架构核心代号名称一览】(截止到 2018·08)...
  13. win10 系统把装在c盘的软件移到其他盘的方法
  14. Java基础知识总结(2022最新版一)|CSDN创作打卡
  15. java swing表格翻页_让Swing表格支持远程后台数据翻页
  16. Android开发中虚拟位置定位、应用双开、IP代理检测
  17. Python数据可视化之绘制带有最佳拟合线的散点图(图文并茂版!!!)
  18. 微型计算机拆的步骤视频,微型计算机拆卸.ppt
  19. 华为OD机试 - 相对开音节 | 备考思路,刷题要点,答疑 【新解法】
  20. STM32F103c8t6的外部触发(ETR)引脚

热门文章

  1. 【Http认证】Http的四种认证方式
  2. 浏览器访问www.baidu.com的过程
  3. 【Java】Appache Flume 中文介绍
  4. luogu 1063
  5. Promise-详解
  6. Kotlin Coroutine
  7. (四)Linux系统定时任务及延迟任务
  8. ASP中Request的常见用法
  9. L1-060 心理阴影面积(Python3)
  10. 【案例】FFMPEG GIF音乐搞笑视频自动生成 内含视频体验