这里定义变量必须是以'--'开头,然后其他页面的样式表就可以直接引用这个变量了
至此就完成了动态修改: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的objectif (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()