网页中CSS样式切换的实现

2016-02-19 19:41 5 1 收藏

下面图老师小编要向大家介绍下网页中CSS样式切换的实现,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

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

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

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

  body {background-color:red;}

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

  body {background-color:green;} 

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

  body {background-color:yellow;} 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

link rel="alternate stylesheet" href="red.css" 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文件,用来控制这个样式切换

 {
 var i, a, main;
 if (title) {
 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;
}

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

a href="javascript :void()" title="红色样式"/a
a href="javascript :void()" title="绿色样式"/a
a href="javascript :void()" title="黄色样式"/a
a href="javascript :void()" title="没有样式"/a

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

  附录:带有记忆功能的JS文档

{
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);

来源:http://www.tulaoshi.com/n/20160219/1621578.html

延伸阅读
标签: Web开发
为了让网页更美观、协调,有的时候需要用到左右等到布局,传统的等高布局是用 javascript 实现的,现在来看看 silence 发明的真正的 CSS 实现的等高布局,其方法主要是采用隐藏容器溢出、正内补丁和负外补丁结合的方法实现的。 下面来看看实际的例子(三列等高),以下面的 XHTML 代码为例: div id="wrap" div id="left&qu...
标签: Web开发
点击这里返回脚本之家 HTML教程 栏目.想浏览CSS教程请点这里。 上文: 标记语言精简标签 。Chapter 10 应用CSS 在第一部分主要的焦点放在标记语法的例子上,也探讨了如何在标签上应用CSS进行设计,指定样式细节.在第二章,我们将讨论几种把CSS应用到一份文档,网站,甚至是单一标签上的做法.除此之外也会讨论怎么对早先版本浏览器隐藏CSS内容,让...
标签: Web开发
随着XHTML的逐渐推广流行,HTML在许多场合已经显得过时。WorldWideWebConsortium(W3C)于2000年6月26日发布了XHTML的第一个版本作为推荐标准。XHTML标准的目标是取代html。按照W3C的说法,XHTML是html的继承者(http://www.w3.org/MarkUp/)。 XHTML具有两大目标: 在文档结构和表示形式之间创建更明显的分离。 将html重新表示为XML的应用程序。 ...
标签: Web开发
站点会根据当时的时间自动调整站点风格。作者为站点制作了早上、下午、夜晚三套皮肤,主要是分别制作了背景。12点以前系统会使用早上的皮肤,过了12点,站点会自动替换成下午的风格,5点后则替换成夜晚的风格。 主要的功能实现是靠在头部的这段判断代码,很容易理解。有兴趣可以自己试试。 link rel="stylesheet" type="text/css" href="...
在学习中遇到问题可以到 论坛 发贴交流! 本例为CSS入门系列教程,在这一课中我们将学习如何在网页中插入CSS样式表,主要学习在页面中插入链入外部样式表、内部样式表、导入外表样式表和内嵌样式的四种方法,另外作者还讲解了多重样式表的叠加的运用以及如何在xml中插入CSS,希望能给对网页制作感兴趣的朋友带来帮助~~ CSS入门教程之如何在...

经验教程

465

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部