2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > JS 鼠标点击切换网站颜色样式方法 – js/jQuery – 前端 jquery 禁止双击

JS 鼠标点击切换网站颜色样式方法 – js/jQuery – 前端 jquery 禁止双击

时间:2020-03-11 15:05:44

相关推荐

JS 鼠标点击切换网站颜色样式方法 – js/jQuery – 前端 jquery 禁止双击

一、在偶以前的印象里,页面的字体属性,背景,等样式在页面加载后基本上都是固定的了,但是今天看到可以通过js修改页面的样式,觉得有必要和大家分享下。

<html><head><metahttp-equiv="Content-Type"content="text/html;charset=GB18030"><title>cssajax</title><scripttype="text/javascript"src="test.js"></script><linkhref="styles.css"type="text/css"rel="stylesheet"/></head><body><tableid="table"><tr><thid="tableHead">ProductName</th></tr><tr><tdid="tableFirstLine">AirPlane</td></tr><tr><tdid="tableSecondLine">Bigcar</td></tr></table><br/><inputtype="button"value="setstyle1"onclick="setStyle1()"/>触发事件改变页面的样式<inputtype="button"value="setstyle2"onclick="setStyle2()"/>触发事件改变页面样式</body></html>

现在页面的文字样式,背景,字体大小,都是系统默认的,待会儿,给大家演示下运行结果,可以比较下哦

JS文件:

functionsetStyle1(){//将表的风格改为style1//获取html的引用oTable=document.getElementById("table");oTableHead=document.getElementById("tableHead");oTableFirstLine=document.getElementById("tableFirstLine");otableSecondLine=document.getElementById("tableSecondLine");//设置风格oTable.className="Table1";oTableHead.className="TableHead1";oTableFirstLine.className="TableContent1";oTableSecondLine.classNamee="TableContent1";}functionsetStyle2(){//将表格的风格改为style2//获取html元素的引用oTable=document.getElementById("table");oTableHead=document.getElementById("tableHead");oTableFirstLine=document.getElementById("tableFirstLine");otableSecondLine=document.getElementById("tableSecondLine");//设置风格oTable.className="Table2";oTableHead.className="TableHead2";oTableFirstLine.className="TableContent2";oTableSecondLine.classNamee="TableContent2";}

CSS:

/*@CHARSET"GB18030";*/.Table1{border:DarkGreen1pxsolid;background-color:LightGreen;}.TableHead1{font-family:Verdana,Arial;font-weight:bold;font-size:10pt;}.TableContent1{font-family:Verdana,Arial;font-size:10pt;}.Table2{border:DarkBlue1pxsolid;background-color:LightBlue;}.TableHead2{font-family:Verdana,Arial;font-weight:bold;font-size:10pt;}.TableContent2{font-family:Verdana,Arial;font-size:10pt;}

二、先说结论,总结成一句话就是 “加载对应的css,后加载的css覆盖默认显示样式,即可达到换主题的目的”,具体的实现分为2步: 准备两份不同主题的css 使用js实现切换(加载)css的方法

生成不同主题的css不同主题的css差异主要体现在颜色这个概念上,理论上只要有使用颜色的地方都需要进行适当的调整,比如文字颜色,背景色,边框颜色等等。简单来说就是白底陪黑字,黑底用白字,如果是采用了灰度色,则根据现实情况进行适度调整或无需调整。最简单的调整颜色的方法是使用适当的工具来生成css,比如less,scss等。

具体请看文章:/article/209505

三、CSS样式切换技巧 – 动态更换网页色彩皮肤

样式与数据分离所带来的不只是符合标准这样的简单,样式既然与数据分离那么样式的切换则变得理所当然的了!但是网上这样的中文教程实在是太少了!所以偶收集了一部分中外网站已经实现的技术资料整理出来供网友参考。

首先要具备不同内容的CSS文件(最好每个文件代表一种样式,或是代表需要作出变动的部分)。这里以三个为例:

第一个是背景为红色的CSS文件(red.css)CSS中的内容为:

Copy code

body {background-color:red;}

第二个是背景为绿色的CSS文件(green.css)CSS中的内容为:

Copy code

body {background-color:green;}

第三个是背景为黄色的CSS文件(yellow.css)CSS中的内容为:

Copy code

body {background-color:yellow;}

然后在xthml文件中加入这三个CSS的链接

Copy code

<link rel="alternate stylesheet" href=\#\\" type="text/css" title="red" media="screen, projection"/>

<link rel="stylesheet" href="green.css" type="text/css" title="green" media="screen, projection"/>

<link rel="alternate stylesheet" href="yellow.css" type="text/css" title="yellow" media="screen, projection"/>

这三个中除了title不一样外还有一个地方有所不同,那就是REL。第一个与第三个都是alternate stylesheet只有第二个是stylesheet。这第二个就是当然样式。

在链接下面再导入一个JS文件,用来控制这个样式切换

Copy code

function setActiveStyleSheet(title) {

var i, a, main;

if (title) {

for(i=0; (a = document.getElementsByTagName(link)[i]); i++) {

if(a.getAttribute( el).indexOf(style) != -1 && a.getAttribute( itle)) {

a.disabled = true;

if(a.getAttribute( itle) == title) a.disabled = false;

}

}

}

}

function getActiveStyleSheet() {

var i, a;

for(i=0; (a = document.getElementsByTagName(link)[i]); i++) {

if(a.getAttribute( el).indexOf(style) != -1 && a.getAttribute( itle) && !a.disabled) return a.getAttribute( itle);

}

return null;

}

在合适的地方加入三个切换按钮

Copy code

<a href=\#\\" :void()" return false;" title="红色样式"></a>

<a href=\#\\" :void()" return false;" title="绿色样式"></a>

<a href=\#\\" :void()" return false;" title="黄色样式"></a>

<a href=\#\\" :void()" return false;" title="没有样式"></a>

好了发布试试点那三个切换链接!是不是已经切换了样式?

补遗:带有记忆功能的JS文档

Copy code

function setActiveStyleSheet(title) {

var i, a, main;

for(i=0; (a = document.getElementsByTagName

("link")[i]); i++) {

if(a.getAttribute("rel").indexOf("style")

!= -1 && a.getAttribute("title")) {

a.disabled = true;

if(a.getAttribute("title") == title)

a.disabled = false;

}

}

}

function getActiveStyleSheet() {

var i, a;

for(i=0; (a = document.getElementsByTagName

("link")[i]); i++) {

if(a.getAttribute("rel").indexOf("style")

!= -1 && a.getAttribute("title") && !a.disabled)

return a.getAttribute("title");

}

return null;

}

function getPreferredStyleSheet() {

var i, a;

for(i=0; (a = document.getElementsByTagName

("link")[i]); i++) {

if(a.getAttribute("rel").indexOf("style") != -1

&& a.getAttribute("rel").indexOf("alt") == -1

&& a.getAttribute("title")

) return a.getAttribute("title");

}

return null;

}

function createCookie(name,value,days) {

if (days) {

var date = new Date();

date.setTime(date.getTime()+(days*24*60*60*1000));

var expires = "; expires="+date.toGMTString();

}

else expires = "";

document.cookie = name+"="+value+expires+";

path=/";

}

function readCookie(name) {

var nameEQ = name + "=";

var ca = document.cookie.split(;);

for(var i=0;i < ca.length;i++) {

var c = ca[i];

while (c.charAt(0)== ) c = c.substring(1,c.length);

if (c.indexOf(nameEQ) == 0) return

c.substring(nameEQ.length,c.length);

}

return null;

}

window.onload = function(e) {

var cookie = readCookie("style");

var title = cookie ? cookie :

getPreferredStyleSheet();

setActiveStyleSheet(title);

}

window.onunload = function(e) {

var title = getActiveStyleSheet();

createCookie("style", title, 365);

}

var cookie = readCookie("style");

var title = cookie ? cookie :

getPreferredStyleSheet();

setActiveStyleSheet(title);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。