gpt4 book ai didi

angular - Ionic-3 如何动态改变 ionic 主题

转载 作者:太空狗 更新时间:2023-10-29 17:28:30 24 4
gpt4 key购买 nike

我需要动态更改我的 ionic 应用主题。 $color 主题值应该从数据库中呈现

给我一​​些短路的想法!

最佳答案

26-02-2019

使用Ionic 4CSS 4,这是一项非常简单的任务。请看this article .

service.ts

import { Injectable, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { DomController } from '@ionic/angular';

interface Theme {
name: string;
styles: ThemeStyle[];
}

interface ThemeStyle {
themeVariable: string;
value: string;
}

@Injectable({
providedIn: 'root'
})
export class ThemeSwitcherService {

private themes: Theme[] = [];
private currentTheme: number = 0;

constructor(private domCtrl: DomController, @Inject(DOCUMENT) private document) {

this.themes = [
{
name: 'day',
styles: [
{ themeVariable: '--ion-color-primary', value: '#f8383a'},
{ themeVariable: '--ion-color-primary-rgb', value: '248,56,58'},
{ themeVariable: '--ion-color-primary-contrast', value: '#ffffff'},
{ themeVariable: '--ion-color-primary-contrast-rgb', value: '255,255,255'},
{ themeVariable: '--ion-color-primary-shade', value: '#da3133'},
{ themeVariable: '--ion-color-primary-tint', value: '#f94c4e'},
{ themeVariable: '--ion-item-ios-background-color', value: '#ffffff'},
{ themeVariable: '--ion-item-md-background-color', value: '#ffffff'},
{ themeVariable: '--ion-tabbar-background-color', value: '#fff'},
{ themeVariable: '--ion-tabbar-ios-text-color-active', value: '#000000'},
{ themeVariable: '--ion-tabbar-md-text-color-active', value: '#000000'},
{ themeVariable: '--ion-background-color', value: '#f94c4e'}
]
},
{
name: 'night',
styles: [
{ themeVariable: '--ion-color-primary', value: '#222428'},
{ themeVariable: '--ion-color-primary-rgb', value: '34,34,34'},
{ themeVariable: '--ion-color-primary-contrast', value: '#ffffff'},
{ themeVariable: '--ion-color-primary-contrast-rgb', value: '255,255,255'},
{ themeVariable: '--ion-color-primary-shade', value: '#1e2023'},
{ themeVariable: '--ion-color-primary-tint', value: '#383a3e'},
{ themeVariable: '--ion-item-ios-background-color', value: '#717171'},
{ themeVariable: '--ion-item-md-background-color', value: '#717171'},
{ themeVariable: '--ion-tabbar-background-color', value: '#222428'},
{ themeVariable: '--ion-tabbar-ios-text-color-active', value: '#ffffff'},
{ themeVariable: '--ion-tabbar-md-text-color-active', value: '#ffffff'},
{ themeVariable: '--ion-background-color', value: '#383838'}
]
}
]

}

cycleTheme(): void {

if(this.themes.length > this.currentTheme + 1){
this.currentTheme++;
} else {
this.currentTheme = 0;
}

this.setTheme(this.themes[this.currentTheme].name);

}

setTheme(name): void {

let theme = this.themes.find(theme => theme.name === name);

this.domCtrl.write(() => {

theme.styles.forEach(style => {
document.documentElement.style.setProperty(style.themeVariable, style.value);
});

});

}

}

关于angular - Ionic-3 如何动态改变 ionic 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com