如何用js改变多个框架的css,也就是让网页整体换肤

JavaScript08

如何用js改变多个框架的css,也就是让网页整体换肤,第1张

<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()

1、安装 ant-design-vue

npm i ant-design-vue --save

2、在 main.js 中引入

3、安装 antd-theme-generator , less 插件

npm i antd-theme-generator --save

npm i less --save

npm i less-loader --save

4、在 src 目录下新建 styles 文件夹,里面新建 index.less , variables.less 文件

variables.less 内容

index.less 文件为空

5、项目根目录下新建 color.js 文件

6、在 publish 文件夹下 index.html 文件中添加以下行,必须添加到 body 下

7、修改 package.json 的启动和打包指令

8、使用

原理:通过 window.less.modifyVars 方法,去动态的改变 less 变量。然后在调用 color.js ,在 pulish 中生成一个 color.less 文件,在 index.html 中重新引入一下,就实现了动态换肤功能。

ok,功能实现,结束。

通常这种情况可能是切图的问题,1秒钟的错误应该是在重新加载图片

解决方法

1、切图的时候图片尽量切成1px可平铺的,图片尽量小,能不能用图片的就尽量用样式代替;

2、切图数量不要过多,可以的话把所有可作为背景的图片统计集中放在一张大图片中,设置背景的时候通过控制背景图片的位置来调取图片,这样做的好处就是图片只要加载一次;

3、用js换肤的话,尽量只换取影响皮肤的css,这样就不要把所有样式都写在一个css上,把固定不变的放在一起,需要变换的另写一个