我使用以下jQuery代码在网站的两个主题(白天/夜晚)之间进行切换。
$('#switch').on('click', function () { $('*').toggleClass('switch-bg'); });
当我单击标识为“ switch”的按钮时,一切都会按预期进行,该按钮将为可用的CSS属性(在本例中为body属性)添加/删除类“ switch-bg”。
示例:
body {background: #fff;} /* DAY mode (default) */
body.switch-bg {background: #000;} /* NIGHT mode */
当我处于“夜间模式”并且某些内容以默认状态“白天模式”加载到页面时,我的问题就开始了,这导致了两者之间的混合。
更多详细信息:
在选择该选项后,我希望所有内容都保持“夜间模式”。
答案 0 :(得分:0)
使用localStorage保存用户的首选项。每次加载新内容并根据保存的选项设置类时,请阅读位置存储条目。
答案 1 :(得分:0)
不要将类应用于所有内容(*)。只需将其应用于主体,并根据上下文进行样式设置即可。
例如
.some-element {background: #fff;} /* DAY mode (default) */
.switch-bg .some-element {background: #000;} /* NIGHT mode */
答案 2 :(得分:0)
解决您的问题的好方法可以是:
只需更改html
中的类即可代替更改所有元素的类。在这种情况下,每晚。
$('#switch').on('click', function () { $('html').toggleClass('nightly'); });
与其基于父类的元素来为其主题设置主题,还不如根据父元素的类为其设置主题。在这种情况下,html
。
.button {
background-color: #fff; // day mode
}
.nightly .button {
background-color: #000; // night mode
}