zoukankan      html  css  js  c++  java
  • react实现换肤功能

    一.目标

      提供几种主题色给用户选择,然后根据用户的选择改变应用的主题色;

    clipboard.png

    二.实现原理

      1.准备不同主题色的样式文件;
      2.将用户的选择记录在本地缓存中;
      3.每次进入应用时,读取缓存,根据缓存的信息判断要加载哪个样式文件即可;

    三.具体实现思路

    1.准备四个对应不同主题色的样式文件:

     ![](https://images2018.cnblogs.com/blog/1178432/201808/1178432-20180813142303707-1847250400.png)
    

    2.在主页给用户提供主题色选择的html:

    
     ```
       <span style={{color:"#0097e5"}} >
                   <i  className={`skinTag skinTag0 ${this.state.skinIndex==0?'active':''}`}  onClick={this.toggleSkin.bind(this,0)}></i>
                   <i  className={`skinTag skinTag1 ${this.state.skinIndex==1?'active':''}`}  onClick={this.toggleSkin.bind(this,1)}></i>
                   <i  className={`skinTag skinTag2 ${this.state.skinIndex==2?'active':''}`}  onClick={this.toggleSkin.bind(this,2)}></i>
                   <i  className={`skinTag skinTag3 ${this.state.skinIndex==3?'active':''}`}  onClick={this.toggleSkin.bind(this,3)}></i>
        </span>
    
       toggleSkin(index){
          setItem('skin',index)  //将最新的主题色名称更新到本地缓存中  
          this.loadingToast('主题色更换中..')
          location.reload()       //主题色更改后刷新页面
      }
    
    ```

    3.主题色选择后,在入口文件根据缓存判断要加载哪个主题色样式:

       var aa=''
       if(getItem('skin')=='0'){
            aa='app'
       }else if(getItem('skin')=='1'){
           aa='app-skin1'
       }else if(getItem('skin')=='2'){
           aa='app-skin2'
       }else if(getItem('skin')=='3'){
            aa='app-skin3'
       }else{
           aa='app'
       }
      require([`./static/css/${aa}.scss`], function(list){});
    

      在这里遇到了一个坑,刚开始的时候我是直接用 require(./static/css/${aa}.scss);的,结果不知道为什么把四个样式文件都加载了,改成上面那个就没问题了,有空再研究一下require;

    四.其他

       卖个小广告:我有一个小程序,可以扫码商品的条码进行留言;别人扫同一个商品的条码就可以看到你的留言;
       让条形码变成你的邮差~~~~
       欢迎扫码体验:

    clipboard.png

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/10manongit/p/12771573.html
Copyright © 2011-2022 走看看