Home > Design > 用jQuery制作页面风格切换开关
2009August . 14th

用jQuery制作页面风格切换开关

越来越多网站已经通过让访客自己选择页面风格来提高访客体验。这次我们利用jQuery这把锋利的剑来实现这个功能。
首先,在header加入几个风格链接是必须的。

<link rel="stylesheet" type="text/css" href="styles1.css" title="styles1" media="screen" />
/*记得为候选风格加上rel="alternate",否则会引起冲突*/
<link rel="alternate stylesheet" type="text/css" href="styles2.css" title="styles2" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="styles3.css" title="styles3" media="screen" />

接下来在页面里加上开关链接,按下面的格式写

<a href="serversideSwitch.html?style=style1" rel="styles1" class="styleswitch">styles1</a>
<a href="serversideSwitch.html?style=style2" rel="styles2" class="styleswitch">styles2</a>
<a href="serversideSwitch.html?style=style3" rel="styles3" class="styleswitch">styles3</a>

最后进行最关键的一部分,写脚本

(function($)
{
	$(document).ready(function() {
		$('.styleswitch').click(function()
		{
			switchStylestyle(this.getAttribute("rel"));
			return false;
		});
		var c = readCookie('style');
		if (c) switchStylestyle(c);
	});
 
	function switchStylestyle(styleName)
	{
		$('link[@rel*=style][title]').each(function(i) 
		{
			this.disabled = true;
			if (this.getAttribute('title') == styleName) this.disabled = false;
		});
		createCookie('style', styleName, 365);
		//把风格设置记录到cookie,并设置失效时间
	}
})(jQuery);
 
//创建cookie
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 var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
 
//读取cookie
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;
}
 
//清除cookie
function eraseCookie(name)
{
	createCookie(name,"",-1);
}

好了,想熟悉的话,自己动手,由于时间关系,我没有做DEMO,请谅解。

原文链接:http://www.kelvinluck.com/2006/05/switch-stylesheets-with-jquery/

  1. 2009August . 15th - 12:56 AM

    沙发?

  2. 2009August . 15th - 9:47 AM

    看不懂了,怎么调用的不同的样式的呢

  3. 2009August . 15th - 12:31 PM

    嘿嘿 不知道我用的上不!我的博客正好两个风格!

  4. 2009August . 15th - 1:48 PM

    看来我是时候花点时间学校jQuery了,不然什么都看不懂

  5. 2009August . 15th - 8:49 PM

    我喜欢现成的东西

  6. 2009August . 15th - 10:46 PM

    只是看代码我啥也看不懂,不过直接copy paste应该就行了

  7. 2009August . 16th - 10:17 AM

    哈哈~学习了~
    我之前是写在同一个文件,通过换body的class换风格的~

  8. 2009August . 16th - 6:45 PM

    呵呵,由于服务器的原因~完全没想法~

  9. 2009August . 16th - 7:37 PM

    这个厉害了,是技术哦 ;-)

  10. 2009August . 16th - 10:41 PM

    不错 COOKIE传值

  11. 2009August . 17th - 4:09 PM

    这个就类似DISCUZ的切换吧,MG的一个主题也有这功能,不过对于博客来说,用处不大。
    我过我自己的倒是考虑加上,每篇日志的标题有背景,可以切换颜色玩玩。

  12. 2009August . 18th - 3:24 PM

    原来样式还有“this.disabled = true;” 这么个属性控制啊?呵,了解了。。

    切换皮肤是用cookie实现的,不错。。

  13. 2009August . 20th - 10:14 AM

    看到了很是感动

  14. 2009August . 20th - 3:23 PM

    这个主题挺好看的!

  15. 2009September . 15th - 8:44 AM

    这种做法不错,或许也可以考虑用jQuery按照时间判断来自动换肤哈哈,比如中午的时候色彩比较亮,到晚上的时候比较暗,或者也可以考虑按照季节更换.

Subscriber selector

Close