css - Ionic v3 在运行时在浅色和深色主题之间切换(动态)

标签 css ionic-framework sass themes

在 Ionic v3 中,文件 variable.scss 中导入了主题。

@import 'ionic.theme.default';

并且可以替换为深色主题以使用深色主题而不是默认的浅色主题。

@import 'ionic.theme.dark';

效果很好。但是如何在运行时在两个主题之间切换呢?以及如何知道哪个主题当前处于事件状态以设置自定义组件的样式。

我已经在互联网上搜索过了,包括这里。但我发现没有任何帮助。所以我认为这不是重复的。也许我错过了什么。但是应该有一种方法可以导入默认和深色主题并在运行时启用切换。

我可以通过 css“hacking”编写自己的主题。但我更喜欢使用 Ionic preset 官方方式。

最佳答案

假设我理解正确,首先在链接中添加一个id

<link
    id="color-CSS"
    rel="stylesheet"
    href=".path/light.css"
    type="text/css"
  />

然后使用一个JS函数来启用切换,比如

<script>
  const mainTheme = "./path/light.css";
  const altTheme = "./path/dark.css";
  const currentCSS = document.querySelector("#color-CSS");
  function toggleTheme() {       
    if (currentCSS.href.includes(mainTheme)) {
      currentCSS.setAttribute("href", altTheme);
    } else {
      currentCSS.setAttribute("href", mainTheme);
    }
  }    
</script>

我不确定,但文件路径开头的点 (.) 可能对解决 MIME 问题很重要。

关于css - Ionic v3 在运行时在浅色和深色主题之间切换(动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57379824/

相关文章:

angularjs - ionic ionic 导航标题未更新

css - 用于存储图像大小的 sass css 映射

css - 如何在 sass 中编写媒体查询?

sass - 获取&符号修饰符以继承父项的所有属性

javascript - jQuery/HTML 选择 : Show more text in selected option when select is closed

css - IE9 + RichFaces 渲染问题

javascript - 如何在 HTML , CSS 中将多个图像卡保持在同一行

html - Firefox 交替行着色

cordova-plugin-whitelist 错误 404 未找到

javascript - ionic 将阵列传递至服务