写在前面:
最近在做新疆双随机信用监管换肤问题,当项目经理给我提这个需求的时候,心里那一瞬间恍惚了,有点怕,确实没接触过呀,脑子一片空白,三秒吧就静下来,在公司管你是菜鸟还是高手,管你是刚毕业还是久经沙场,大家没有什么不同,哈哈,我就把这个项目接下来了,我这人注重结果比过程更多一点,心情恢复之后我想的是,既然有这个需求又分配给我了, 到期我肯定是要把这个需求给交出来的呀,我又做了一个之前没尝试过的事情呀,又是一笔漂亮的履历呀,几天之后我就是一个做过大型系统换肤功能的前端了呀,哈哈,(我是一个接手一个项目之后从来没有想过完成不了怎么办,都是先提前享受一下成功的喜悦的人)现在我来这报道了,我做出来了,嘿嘿,做出来再回首的时候感觉其实把换肤功能写出来会不会有点小丢人呢,确实没有难度啊,,很简单的事情啊,,,没有得瑟,是真的哈,下面就赘述一下我换肤的过程的‘辛酸’吧。以后再有换肤需求的时候,我做过就不怕了呀,嘻嘻
下面有自己不成熟的思路也有成熟成功的,可以直接看后面,写不成熟的目的是,我把坑踩过了,别再踩了,哈哈
大体上的思路是,访问网页-->读取cookie/storage-->根据本地存储保存的提示信息切换到相应的主题颜色,若本地没有存储或者清除缓存,提供默认的颜色,------这是访问系统时的功能
进入到系统时主动换肤: 点击换肤按钮或者图标或者提示换肤的文字都可以,点击之后会弹出四个主题进行挑选,选好之后点击保存按钮,换肤这个弹框关闭的时候就要进行动态主题颜色切换了
//点击主题颜色时调用的函数
function tc(id) {
localStorage.setItem(‘skin‘,id) //点击不同的主题时存下的数据
}
//点击保存按钮调用的函数
function save() {
$(".mask").hide();
$(".skin-layer").slideUp();
localStorage.setItem(‘save‘,localStorage.getItem(‘skin‘)) //保存最后点击时的数据,最大的作用是不点击保存按钮时不会走这个函数,也就是你选好了样式不点击保存不会生效,也不避免了误触
//刷新页面
window.location.replace(window.location.href)
}
不成熟的想法3 怎么改变样式呢,起初是写了四套样式,想着到时候根据传的参数动态的改变路径就可以了,可是又天真了,对就是愚蠢了,诺大的系统,又不是单页面问题,涉及到跨页面了,而且样式也不是一个,真的是头疼,最后把所有引用的样式整理到一个页面,将这个页面引进到需要相应样式的页面,解决的是只需要改一个页面的问题,其实我感觉是类似于vue中的组件了
不成熟的想法4 怎么动态的改变路径呢 1.路径变化本来采取的根据本地存储的字符串进行判断,然后修改后缀,没成功。第二个方法是将四套样式全部写出来,然后隐藏,根据本地存储的数字判断哪个展示哪个隐藏,但是又失败了,样式会被最后一条进行覆盖,diaplay的显示和隐藏失效,最后采取的是在页面写了空的link标签用switch语句将符合条件的样式进行添加,路径添加请教了张轩哥哥-最终可以实现样式的变化
不成熟的想法5 还有根据颜色,换肤弹窗弹出的时候给谁加active,这个最终成熟的思路是,将active默认样式去掉,通过判断进行添加,点击换肤按钮时,就先判断本地存储的是啥,根据本地存储给相应的样式添加active默认样式,如果本地存储为空就给黄色样式进行添加active默认样式,然后点击哪个li标签就给哪个标签添加样式,还有最主要的一点切记就是点击关闭按钮或者取消按钮时要给(然后点击哪个li标签就给哪个标签添加样式,)这一步添加的样式去掉,不然下次打开会有两个默认样式(这是自己测试之后踩的坑)。
原文:https://www.cnblogs.com/wszzj/p/13887534.html