JQuery 前臺(tái)切換網(wǎng)站的樣式實(shí)現(xiàn)
更新時(shí)間:2009年06月22日 13:22:42 作者:
本文說的是在WordPress中怎樣利用JQuery在網(wǎng)站的前臺(tái)切換樣式的方法?;蛘哌@篇文章的方法大家可能不是太需要,因?yàn)槲矣X得這是解決我被主題樣式折騰到差不多分裂的原因及結(jié)果的最后手段。
但如果你想為網(wǎng)站添加多一些樣式,讓訪客選擇;又或者你想調(diào)整一下網(wǎng)站的樣式,而在決定前讓訪客先體現(xiàn)的話,這也是一個(gè)很好的辦法,省去總是切換主題的痛苦。
切換效果參照本站。
1. 切換樣式的按鈕代碼:
<div id="style-switch">
<ul>
<li><a href="#?style=white" rel="white" class="styleswitch white">Day</a></li>
<li><a href="#?style=black" rel="black" class="styleswitch black">Night</a></li>
</ul>
</div>
上面的按鈕代碼請(qǐng)根據(jù)你的網(wǎng)站設(shè)計(jì)放置。比如在我這里是放到header.php文件中的。
2. 樣式引用代碼:
<?php if($_COOKIE['style'] == 'black') : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" />
<?php else : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" />
<?php endif; ?>
在這里我簡(jiǎn)單說明一下:
因?yàn)樵诤竺娴膉s代碼中會(huì)于瀏覽器的cookie部分寫入一個(gè)cookie記錄“style”,所以在這里我會(huì)讓瀏覽器根據(jù)記錄進(jìn)行樣式的調(diào)用(這里為兩個(gè)樣式,一個(gè)“white”,另一個(gè)“black”)。
當(dāng)瀏覽器存在“style”的cookie記錄,并記錄為“black”時(shí)候,則先讀取black.css文件,這可以說是主樣式文件;及后再讀取輔助樣式(就是供需要切換的樣式),white.css。
如果瀏覽器沒有任何“style”的樣式cookie記錄,或者“style”的樣式cookie記錄為“white”時(shí)候,則主題先讀取white.css文件,再讀取black.css文件。
在這里需要補(bǔ)充的是,使用PHP的cookie讀取會(huì)比使用js的cookie讀取更為有效。因?yàn)槲以瓉硎抢胘s進(jìn)行cookie的讀取動(dòng)作,但由于js的加載還是需要那么一點(diǎn)時(shí)間,所以在切換樣式后的頁面瀏覽中并不完美。如果你以前發(fā)現(xiàn)選擇黑色主題后,再瀏覽頁面,會(huì)出現(xiàn)先是一瞬間的白色主題,然后才是黑色主題的現(xiàn)象。這就是我要說明的情況了。現(xiàn)在使用PHP代碼則不再存在這個(gè)不足。
3. Javascript部分代碼:(注意前提是你已經(jīng)在網(wǎng)站中調(diào)用了JQuery庫)
(function($)
{
$(document).ready(function() {
$('.styleswitch').click(function() {
$('body').append('<div id="overlay" />');
$('#overlay')
.css({
display: 'none',
position: 'absolute',
top:0,
left: 0,
width: '100%',
height: '2000%',
zIndex: 1000,
background: 'black'
})
.fadeIn(500);
switchStylestyle(this.getAttribute("rel"));
$('#overlay').fadeOut(500);
return false;
});
});
function switchStylestyle(styleName)
{setTimeout(function() {
$('link[@rel*=style][title]').each(function(i)
{
this.disabled = true;
if (this.getAttribute('title') == styleName) this.disabled = false;
});}, 500);
createCookie('style', styleName, 365);
}
})(jQuery);
上面的部分是點(diǎn)擊動(dòng)作部分。我在中間添加了一段#overlay的塊樣式是為了在切換過程中制作一個(gè)燈箱效果,這樣會(huì)比突然的切換來得更為自然。
然后還需要添加產(chǎn)生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 eraseCookie(name)
{
createCookie(name,"",-1);
}
到此,完成上面三部后就可以了,希望大家看得明白。
切換效果參照本站。
1. 切換樣式的按鈕代碼:
復(fù)制代碼 代碼如下:
<div id="style-switch">
<ul>
<li><a href="#?style=white" rel="white" class="styleswitch white">Day</a></li>
<li><a href="#?style=black" rel="black" class="styleswitch black">Night</a></li>
</ul>
</div>
上面的按鈕代碼請(qǐng)根據(jù)你的網(wǎng)站設(shè)計(jì)放置。比如在我這里是放到header.php文件中的。
2. 樣式引用代碼:
復(fù)制代碼 代碼如下:
<?php if($_COOKIE['style'] == 'black') : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" />
<?php else : ?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" />
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" />
<?php endif; ?>
在這里我簡(jiǎn)單說明一下:
因?yàn)樵诤竺娴膉s代碼中會(huì)于瀏覽器的cookie部分寫入一個(gè)cookie記錄“style”,所以在這里我會(huì)讓瀏覽器根據(jù)記錄進(jìn)行樣式的調(diào)用(這里為兩個(gè)樣式,一個(gè)“white”,另一個(gè)“black”)。
當(dāng)瀏覽器存在“style”的cookie記錄,并記錄為“black”時(shí)候,則先讀取black.css文件,這可以說是主樣式文件;及后再讀取輔助樣式(就是供需要切換的樣式),white.css。
如果瀏覽器沒有任何“style”的樣式cookie記錄,或者“style”的樣式cookie記錄為“white”時(shí)候,則主題先讀取white.css文件,再讀取black.css文件。
在這里需要補(bǔ)充的是,使用PHP的cookie讀取會(huì)比使用js的cookie讀取更為有效。因?yàn)槲以瓉硎抢胘s進(jìn)行cookie的讀取動(dòng)作,但由于js的加載還是需要那么一點(diǎn)時(shí)間,所以在切換樣式后的頁面瀏覽中并不完美。如果你以前發(fā)現(xiàn)選擇黑色主題后,再瀏覽頁面,會(huì)出現(xiàn)先是一瞬間的白色主題,然后才是黑色主題的現(xiàn)象。這就是我要說明的情況了。現(xiàn)在使用PHP代碼則不再存在這個(gè)不足。
3. Javascript部分代碼:(注意前提是你已經(jīng)在網(wǎng)站中調(diào)用了JQuery庫)
復(fù)制代碼 代碼如下:
(function($)
{
$(document).ready(function() {
$('.styleswitch').click(function() {
$('body').append('<div id="overlay" />');
$('#overlay')
.css({
display: 'none',
position: 'absolute',
top:0,
left: 0,
width: '100%',
height: '2000%',
zIndex: 1000,
background: 'black'
})
.fadeIn(500);
switchStylestyle(this.getAttribute("rel"));
$('#overlay').fadeOut(500);
return false;
});
});
function switchStylestyle(styleName)
{setTimeout(function() {
$('link[@rel*=style][title]').each(function(i)
{
this.disabled = true;
if (this.getAttribute('title') == styleName) this.disabled = false;
});}, 500);
createCookie('style', styleName, 365);
}
})(jQuery);
上面的部分是點(diǎn)擊動(dòng)作部分。我在中間添加了一段#overlay的塊樣式是為了在切換過程中制作一個(gè)燈箱效果,這樣會(huì)比突然的切換來得更為自然。
然后還需要添加產(chǎn)生cookie記錄的功能代碼:
復(fù)制代碼 代碼如下:
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記錄的功能代碼:
復(fù)制代碼 代碼如下:
function eraseCookie(name)
{
createCookie(name,"",-1);
}
到此,完成上面三部后就可以了,希望大家看得明白。
相關(guān)文章
JS中Json數(shù)據(jù)的處理和解析JSON數(shù)據(jù)的方法詳解
JSON (JavaScript Object Notation)一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧,這篇文章主要介紹了JS中Json數(shù)據(jù)的處理和解析JSON數(shù)據(jù)的方法詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06javascript中JSON對(duì)象與JSON字符串相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了javascript中JSON對(duì)象與JSON字符串相互轉(zhuǎn)換,實(shí)例分析了json對(duì)象與字符串常用的幾種轉(zhuǎn)換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07JS實(shí)現(xiàn)面包屑導(dǎo)航功能從零開始示例
這篇文章主要為大家介紹了JS實(shí)現(xiàn)面包屑導(dǎo)航功能從零開始示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12如何正確使用javascript 來進(jìn)行我們的程序開發(fā)
Javascript 正確使用方法,下面為大家介紹的是一個(gè)關(guān)于如何正確使用javascript 來進(jìn)行我們的程序開發(fā),需要的朋友可以參考下2014-06-06Bootstrap學(xué)習(xí)筆記之js組件(4)
這篇文章主要為大家詳細(xì)介紹了Bootstrap學(xué)習(xí)筆記之js組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06js實(shí)現(xiàn)兼容性好的微軟官網(wǎng)導(dǎo)航下拉菜單效果
這篇文章主要介紹了js實(shí)現(xiàn)兼容性好的微軟官網(wǎng)導(dǎo)航下拉菜單效果,涉及JavaScript基于鼠標(biāo)事件實(shí)現(xiàn)頁面樣式變換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-09-09