JS一键换肤

      项目要求通过js来控制进行一键换肤,例如把#ffffff改成#000000的颜色等,通过一系列的方法对比,结出比较合适的方案是:通过ocument.body.style.setProperty方法来给body上添加变量,在css中应用变量,然后在js中控制变量的。例如:'--color1a" 是为了解决变量中有透明度要求的问题。

此方法优势有:不需要引用插件,使用原生js, css使用var函数,  兼容性强。

在css中使用如下:

color: var(--color1);

background: rgba(var(--color1a),.5);

js方法如下:

let theme1 = {

  "--color1": "#FFFFFF",

  "--color2": "#DBDBDB",

  "--color3": "#ACACAC",

  "--color1a": "255,255,255",

  "--color2a": "219,219,219",

  "--color3a": "172,172,172",

}

let theme2 = {

  "--color1": "#000000",

  "--color2": "#262626",

  "--color3": "#595959",

  "--color1a": "0,0,0",

  "--color2a": "38,38,38",

  "--color3a": "38,38,38",

}

//  css使用时  color: var(--color1); background: rgba(var(--color1a),.5);

//修改样式

export function sendTheme (theme) {

  let res = {

  if (theme == 'theme2') {

    res = theme2

  } else {

    res = theme1

  }

  Object.keys(res).map((key) => {

   document.body.style.setProperty(key, res[key]);

  })

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容