jquery - 预加载 css 文件到缓存中以进行主题切换

标签 jquery css

我希望让用户能够切换主题,并且我有 2 个单独的样式表,每个主题 1 个。

我做了这样的事情来切换它

    toggleTheme() {
        if (usingWhiteTheme) {
            $('link[href="white.css"]').attr('href', 'dark.css');   
            usingWhiteTheme = false;        
        } else {
            $('link[href="dark.css"]').attr('href', 'white.css');    
            usingWhiteTheme = true;
        }
    }

但是,当它第一次从服务器加载文件时,它会导致可怕的闪烁。之后,它会无闪烁地切换。

如何预加载此样式,然后从缓存中加载它?我是否应该使用缓存,或者对于关闭缓存的用户来说是否有更可靠的方法?我可以将其放入本地存储吗?

最佳答案

这是我在 Dojo 工具包中观察到的方法。

主题1

 document.body.className = "theme1";

主题2

 document.body.className = "theme2";

你的CSS应该是模块化的,如下所示

在 theme1.css

 .theme1 div{
     background-color : green
 }

在 theme2.css 中

 .theme2 div{
     background-color : yellow;
 }

关于jquery - 预加载 css 文件到缓存中以进行主题切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103177/

相关文章:

javascript - 动态添加长度为 0 的 div?

javascript - 使用 jQuery 创建 HTML 元素的最有效方法是什么?

CSS - 填充包含 div 的剩余宽度

jquery - 通过 CSS 属性设置元素属性,这可能吗?

javascript - 在 javascript : null error 中设置 z-index

jquery - 什么可能导致 JQuery 的选择器崩溃?

javascript - 将变量传递给外部 JS 文件?

jquery - HTML5 "required"验证未在 Mozilla Firefox 中显示错误消息

jquery - 页面加载时自动设置页面背景颜色的动画

javascript - 单击时在长列表中的两个图像之间切换