###=== Vue+Element 项目更换主题小记

场景:项目在即将结束后新增主题换肤要求,提供时间仅三天。

过程:一开始是想到的element提供的换肤方法,在研究后发现原理是将所有的元素再生成一个样式覆盖掉之前的,想了想觉得在目前这个情况下不适用。

  然后又想到给需要变换的body上新增一个新主题的样式类名,但是没有想到如何动态的切换主题的点击事情。

  根据需求考虑,是将所有的浅蓝色换成天蓝色,于是就动了心思。最后选择了一个最简单恶心的方法,在打包后,因为会将所有的单页面vue文件中的style全部放在app.css中。

  然后搜索关键字将所有的浅蓝色更换成天蓝色,保存为app2.css。然后在index.html中更换link:

    document.querySelector("#cssTheme").href="static/css/apps.css";

  并且需要理由localStroage保存下来,避免刷新页面时候重新恢复到原主题:

    window.localStorage["a"]="static/css/apps.css"
  同时在顶部给个判断:
    if (window.localStorage["a"]) {document.querySelector("#cssTheme").href=window.localStorage["a"];}
  唯一的瑕疵是在更换主题后,F5页面时候会有一个瞬间的原主题的效果,思考了几种方案,例如不给window.onload,不给link href等等,都没法解决。
  解决方案待定。
  
posted @ 2018-12-05 14:54  mableliu  阅读(490)  评论(0)    收藏  举报