麻烦让一让,我比较宽

麻烦让一让,我比较宽

项目背景: 由于项目要求,需要前端对不同的企业用户展示不一样的颜色,也就是简单的更改肤色.本来使用前端框架会很容易解决,但是公司目前的架构不是很好,前后端分离也没有那么彻底,web工程还是搭配jsp,没办法,只好用最纯粹的css来实现换肤要求了.

方案一

最开始没怎么想,决定使用最简单的方法,根据不同的颜色方案加载不同的css

    <link rel="stylesheet" href="" id="customerTheme">
    <script>
    //根据不同的企业用户加载不同的css
 	document.querySelector('#customerTheme').setAttribute('href','./theme1.css')
 	</script>

这种方案比较简单,但相应的就需要写很多css,而且css除了颜色不一样,代码重复比较多,维护起来也不方便,虽然皮肤可能不会太多,但是作为一个有逼格的程序员,这种代码必须要优化.

方案二

第二种方法是和同事探讨的时候,同事说偶然看谷歌页面时发现的.

 <link rel="stylesheet" href="" id="customerTheme">
 <link rel="stylesheet" href="./theme.css">
       <script>
       //根据不同的企业用户加载不同的css
		document.querySelector('#customerTheme').setAttribute('href','./root_theme1.css')
		</script>
  /* root_theme1.css */
:root{
--bgColor:#f00;
}
  /* theme.css */
.theme{
background:var(bgColor);
}

按照这种写法,我们只需要多写几个root_themeX.css的变量css,根据不同的企业用户加载不同的root_theme的css文件就可以实现换肤的功能.

:root这个时css3中的特性,用的其实比较少,也比较陌生,但只要用过一次,以后就都记住啦!

07-30 23:54