JQuery 前臺切換網(wǎng)站的樣式實現(xiàn)
更新時間:2009年06月22日 13:22:42 作者:
本文說的是在WordPress中怎樣利用JQuery在網(wǎng)站的前臺切換樣式的方法?;蛘哌@篇文章的方法大家可能不是太需要,因為我覺得這是解決我被主題樣式折騰到差不多分裂的原因及結(jié)果的最后手段。
但如果你想為網(wǎng)站添加多一些樣式,讓訪客選擇;又或者你想調(diào)整一下網(wǎng)站的樣式,而在決定前讓訪客先體現(xiàn)的話,這也是一個很好的辦法,省去總是切換主題的痛苦。
切換效果參照本站。
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>
上面的按鈕代碼請根據(jù)你的網(wǎng)站設計放置。比如在我這里是放到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; ?>
在這里我簡單說明一下:
因為在后面的js代碼中會于瀏覽器的cookie部分寫入一個cookie記錄“style”,所以在這里我會讓瀏覽器根據(jù)記錄進行樣式的調(diào)用(這里為兩個樣式,一個“white”,另一個“black”)。
當瀏覽器存在“style”的cookie記錄,并記錄為“black”時候,則先讀取black.css文件,這可以說是主樣式文件;及后再讀取輔助樣式(就是供需要切換的樣式),white.css。
如果瀏覽器沒有任何“style”的樣式cookie記錄,或者“style”的樣式cookie記錄為“white”時候,則主題先讀取white.css文件,再讀取black.css文件。
在這里需要補充的是,使用PHP的cookie讀取會比使用js的cookie讀取更為有效。因為我原來是利用js進行cookie的讀取動作,但由于js的加載還是需要那么一點時間,所以在切換樣式后的頁面瀏覽中并不完美。如果你以前發(fā)現(xiàn)選擇黑色主題后,再瀏覽頁面,會出現(xiàn)先是一瞬間的白色主題,然后才是黑色主題的現(xiàn)象。這就是我要說明的情況了?,F(xiàn)在使用PHP代碼則不再存在這個不足。
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);
上面的部分是點擊動作部分。我在中間添加了一段#overlay的塊樣式是為了在切換過程中制作一個燈箱效果,這樣會比突然的切換來得更為自然。
然后還需要添加產(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. 切換樣式的按鈕代碼:
復制代碼 代碼如下:
<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>
上面的按鈕代碼請根據(jù)你的網(wǎng)站設計放置。比如在我這里是放到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; ?>
在這里我簡單說明一下:
因為在后面的js代碼中會于瀏覽器的cookie部分寫入一個cookie記錄“style”,所以在這里我會讓瀏覽器根據(jù)記錄進行樣式的調(diào)用(這里為兩個樣式,一個“white”,另一個“black”)。
當瀏覽器存在“style”的cookie記錄,并記錄為“black”時候,則先讀取black.css文件,這可以說是主樣式文件;及后再讀取輔助樣式(就是供需要切換的樣式),white.css。
如果瀏覽器沒有任何“style”的樣式cookie記錄,或者“style”的樣式cookie記錄為“white”時候,則主題先讀取white.css文件,再讀取black.css文件。
在這里需要補充的是,使用PHP的cookie讀取會比使用js的cookie讀取更為有效。因為我原來是利用js進行cookie的讀取動作,但由于js的加載還是需要那么一點時間,所以在切換樣式后的頁面瀏覽中并不完美。如果你以前發(fā)現(xiàn)選擇黑色主題后,再瀏覽頁面,會出現(xiàn)先是一瞬間的白色主題,然后才是黑色主題的現(xiàn)象。這就是我要說明的情況了?,F(xiàn)在使用PHP代碼則不再存在這個不足。
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);
上面的部分是點擊動作部分。我在中間添加了一段#overlay的塊樣式是為了在切換過程中制作一個燈箱效果,這樣會比突然的切換來得更為自然。
然后還需要添加產(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);
}
到此,完成上面三部后就可以了,希望大家看得明白。
相關(guān)文章
JS中Json數(shù)據(jù)的處理和解析JSON數(shù)據(jù)的方法詳解
JSON (JavaScript Object Notation)一種簡單的數(shù)據(jù)格式,比xml更輕巧,這篇文章主要介紹了JS中Json數(shù)據(jù)的處理和解析JSON數(shù)據(jù)的方法詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06javascript中JSON對象與JSON字符串相互轉(zhuǎn)換實例
這篇文章主要介紹了javascript中JSON對象與JSON字符串相互轉(zhuǎn)換,實例分析了json對象與字符串常用的幾種轉(zhuǎn)換技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07如何正確使用javascript 來進行我們的程序開發(fā)
Javascript 正確使用方法,下面為大家介紹的是一個關(guān)于如何正確使用javascript 來進行我們的程序開發(fā),需要的朋友可以參考下2014-06-06js實現(xiàn)兼容性好的微軟官網(wǎng)導航下拉菜單效果
這篇文章主要介紹了js實現(xiàn)兼容性好的微軟官網(wǎng)導航下拉菜單效果,涉及JavaScript基于鼠標事件實現(xiàn)頁面樣式變換的技巧,非常具有實用價值,需要的朋友可以參考下2015-09-09