CSS结合js实现动态更换皮肤
发布时间:2007-07-14 10:01:00
标签:皮肤,rel,css
内容摘要:您是否想让您的网站有多种显示风格呢,本文介绍了如何使用CSS结合js实现动态更换页面皮肤风格。看了下面的介绍您就明白了如何实现了这一功能了,赶快动手吧!
为了方便实现这一功能,我们在设计网站的时候最好使用CSS+div来布局,我们把基本的CSS抽取出来命名为style.css。所有的页面样式都写在style.css中。本例实现的是页面字体大小的变换。这个文件不论字体是放大还是缩小都要用。然后我们根据需要再划分3个css文件。分别定义了大,中,小字体的时候页面的元素外观。
在html的顶部引用css文件。
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="text-small.css" title="Small Text" />
<link rel="alternate stylesheet" type="text/css" href="text-medium.css" title="Medium Text" />
<link rel="alternate stylesheet" type="text/css" href="text-large.css" title="Large Text" />
细心的你会看到上面的rel属性有不同。对了,这就是关键,html认为只有rel="stylesheet"的css文件才会被最终调用。我们只需要编写一个js脚本来修改各个css的rel属性就可以实现更换不同的css了。
在HTML内容区的最上面增加
<script type="text/javascript" src="switcher.js"></script>
switcher.js代码如下
/* Style Switcher by Paul Sowden, see A List Apart:
http://www.alistapart.com/articles/alternate/ */
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);
document.writeln("<div id=\"textsize\">Text Size: <a href=\"#\" onclick=\"setActiveStyleSheet
(’Small Text’); return false;\" title=\"Switch to Small Text Size\" id=\"text-small\">S</a><a
href=\"#\" onclick=\"setActiveStyleSheet(’Medium Text’); return false;\" title=\"Switch to
Medium Text Size\" id=\"text-medium\">M</a><a href=\"#\" onclick=\"setActiveStyleSheet(’Large
Text’); return false;\" title=\"Switch to Large Text Size\" id=\"text-large\">L</a></div>");
复制上面的代码另存为switcher.js文件即可,
switcher.js会在html页面中增加更换字体大小的链接按钮,并实现CSS文件的转换。
顺着这个思路,你可以制作更换皮肤,更换布局等以及更多的我想不到的效果。


猜你喜欢
- 安装jenkins安装jenkins很简单,可以用多种方式安装,这里知道的有:在官网下载rpm包,手动安装,最费事centos系统通过yum
- 第一次见到《Web标准和SEO应用实践》是在我们UCD书友会《设计沟通十器》新书发布现场,机械工业出版社的朋友还带了很多相关新书过来,当时本
- 我们再用Jupyter-notebook,ipython-console,qtconsole的时候,有的时候画图希望不弹出窗口,直接画在co
- 引言Algolia 为构建者提供构建世界级体验所需的搜索和推荐服务。Algolia 是一个数据库实时搜索服务,能够提供毫秒级的数据库搜索服务
- 翻看自己以前写的程序,发现写过一个爬取盘多多百度云资源的东西,完全是当时想看变形金刚才自己写的,而且当时第一次接触python大概写了有2天
- CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,
- 在密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。GnuPG和PGP等很
- 运行效果:完整源码:##import libraryfrom tkinter import *import timefrom playsou
- 该章节我们来学习一下在 Python 中去创建并使用多进程的方法,通过学习该章节,我们将可以通过创建多个进程来帮助我们提高脚本执行的效率。可
- 阅读目录tcp协议:流式协议(以数据流的形式通信传输)、安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信)tcp协议在O
- 视图(View)“视图”主要指我们送到Web浏览器的最终结果??比如我们的脚本生成的HTML。当说到视图时,很多人想到的是模版,但是把模板方
- 1、一般CentOS默认安装了mariadb,所以先查看是否安装mariadb,如果安装就需要先卸载mariadbrpm -qa|grep
- function MakeUrl($arr){  
- 本文实例讲述了Python通过for循环理解迭代器和生成器。分享给大家供大家参考,具体如下:迭代器可迭代对象通过 for…in… 循环依次拿
- 本文实例讲述了python实现与redis交互操作。分享给大家供大家参考,具体如下:相关内容:redis模块的使用设置值获取值安装模块导入模
- 本文实例讲述了Python实现base64编码的图片保存到本地功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -
- 我就废话不多说了,大家还是直接看代码吧!# -*- coding: utf-8 -*-"""Created o
- 这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 本文介绍python统计词频的几种方法,供大家参考方法一:运用集合去重方法def word_count1(words,n):
- datetime64与unix时间戳互转在用pandas处理数据时,经常要处理一些时间类型数据,经常把pandas时间类型与datetime