javascript - javascript中单页应用程序的主题支持

标签 javascript css themes angularjs

我想为我的单页应用程序添加主题支持。要求是主题更改必须通过 javascript 在本地完成(无服务器调用)才能在离线模式下使用。我用的是angularjs,所以html会在router中改变。

我唯一的问题是如何处理 css。有没有js库可以帮我加载css文件?有什么问题吗?

编辑: 我找到了以下库 https://github.com/rgrove/lazyload/应该完成加载 css 文件的工作。该库唯一的缺点是该库的最后一次更新是一年多以前了。一个更积极开发的图书馆将不胜感激。

最佳答案

style 元素可以在 JavaScript 中添加和移除。只需创建元素并将其添加到页面以应用其中的规则,然后删除元素以删除其规则。您可以对引用外部样式表的 link 元素执行相同的操作,但是如果您希望确保在离线模式下工作并且表单可能未被缓存,则 style具有内联规则的元素可能会更好。

这是一个使用 style 元素的例子:

(function() {
  var css = "body { color: green; }";

  document.getElementById("theButton").onclick = toggleStyle;

  function toggleStyle() {
    var style = document.getElementById("styleOne");
    if (style) {
      // Remove it
      style.parentNode.removeChild(style);
    }
    else {
      // Add it
      style = document.createElement('style');
      style.id = "styleOne";
      if (style.styleSheet) {
          style.styleSheet.cssText = css;
      }
      else {
          style.appendChild(document.createTextNode(css));
      }
      document.body.appendChild(style);
    }
  }

})();

Live Copy | Source

使用 link 会更容易,因为您不必处理样式文本所在位置的浏览器差异。

关于javascript - javascript中单页应用程序的主题支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232378/

相关文章:

javascript - 实现任意对象的通用、轻量级且不显眼的标记?

c# - 如何以编程方式更改 Win 8.1 或 Win 10 UWP 应用程序的背景主题?

android - 无法在 DayNight 主题中动态切换模式

德鲁帕尔 6 : How to add a new region to a theme

javascript - 用 JavaScript 替换多个图像中的一张

javascript - 我应该在 Phonegap 3.0 应用程序中包含 phonegap.js 或 cordova-3.0.0.js 还是两者?

javascript - 如何确保 promise 链返回一个对象

javascript - Button 上的 Bootstrap 3 Popover 未正确关闭

尽管同时具有 min-height 和 height 标签,但页面底部的 CSS 空白

javascript - 使用 JQuery 设置背景图像 ID