动态修改css中:root定义的变量-换肤、主题色

html-css018

动态修改css中:root定义的变量-换肤、主题色,第1张

前端中有用到需要设置主题颜色,根据用户喜欢实现换肤的可以使用css中:root定义变量的方式,或者使用动态切换引入的外部css样式表实现,这里着重记录下动态修改css中:root定义的变量实现换肤:

这里定义变量必须是以'--'开头,然后其他页面的样式表就可以直接引用这个变量了

至此就完成了动态修改:root变量实现换肤了,具体的应用场景中我们应该是在页面上操作,选中需要的肤色然后修改:root定义的变量值,考虑到浏览器刷新会重置原始状态的值,这里要结合本地存储方式记住选中的肤色,具体的实现参考:

换肤就是换css

你可以定义2套css,这2套css的区别在最外层的父元素

比方说,.father1 .child和.father2 .child区分

实际使用的时候考js把最外层父元素的class换掉就ok了

<link href="css/color1.css" id="color" rel="stylesheet" type="text/css" /><!--注意这行的id-->

<a onclick="changeStyle(1)">样式1</a>

<a onclick="changeStyle(2)">样式2</a>

上面是html,下面是js.把选定的样式加载进cookies ,网页加载先查cookie。

function getObject(elementId) { //获取指定id的object 

if (document.getElementByIdx) {  return document.getElementByIdx(elementId) } 

else if (document.all) {  return document.all[elementId] } 

else if (document.layers) {  return document.layers[elementId] }

}

function changeStyle(id){//切换样式 

var stylesheet=getObject("color").href="css/color"+id+".css" 

document.cookie="stylesheet="+escape(stylesheet)//写入Cookie 

//alert(document.cookie) 

//alert(stylesheet)

}

function initStyle(){ //初始化样式,如果cookie存在样式,则加载cookie样式,否则加载默认样式  

if(/stylesheet=([^]+)/.test(document.cookie))//判断是否存在cookie.   

getObject("color").href=unescape(RegExp.$1)   

//alert(/stylesheet=([^]+)/.test(document.cookie))

}initStyle()