本文實例講述了jQuery實現(xiàn)帶滾動導航效果的全屏滾動相冊。分享給大家供大家參考。具體如下:

成都創(chuàng)新互聯(lián):2013年至今為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設”服務,為上千多家公司企業(yè)提供了專業(yè)的成都做網(wǎng)站、網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設、網(wǎng)頁設計和網(wǎng)站推廣服務, 按需設計網(wǎng)站由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構架,制作客戶同行業(yè)具有領先地位的。
運行效果圖如下:
主要代碼如下:
$(function()
{
//加載時的圖片
var
$loader=
$('#st_loading');
//獲取的ul元素
var
$list=
$('#st_nav');
//當前顯示的圖片
var
$currImage
=
$('#st_main').children('img:first');
//加載當前的圖片
//同時顯示導航的項
$('img').load(function(){
$loader.hide();
$currImage.fadeIn(3000);
//滑出導航
setTimeout(function(){
$list.animate({'left':'0px'},500);
},
1000);
}).attr('src',$currImage.attr('src'));
//計算出將被顯示的略縮圖所在的div元素的寬度
buildThumbs();
function
buildThumbs(){
$list.children('li.album').each(function(){
var
$elem
=
$(this);
var
$thumbs_wrapper
=
$elem.find('.st_thumbs_wrapper');
var
$thumbs
=
$thumbs_wrapper.children(':first');
//每張略縮圖占有180像素的寬度和3像素的間距(margin)
var
finalW
=
$thumbs.find('img').length
*
183;
$thumbs.css('width',finalW
+
'px');
//是這元素具有滾動性
makeScrollable($thumbs_wrapper,$thumbs);
});
}
//點擊菜單項目的時候(向上向下箭頭切換)
//使略縮圖的div層顯示和隱藏當前的
//打開菜單(如果有的話)
$list.find('.st_arrow_down').live('click',function(){
var
$this
=
$(this);
hideThumbs();
$this.addClass('st_arrow_up').removeClass('st_arrow_down');
var
$elem
=
$this.closest('li');
$elem.addClass('current').animate({'height':'170px'},200);
var
$thumbs_wrapper
=
$this.parent().next();
$thumbs_wrapper.show(200);
});
$list.find('.st_arrow_up').live('click',function(){
var
$this
=
$(this);
$this.addClass('st_arrow_down').removeClass('st_arrow_up');
hideThumbs();
});
//點擊略縮圖,改變大的圖片
$list.find('.st_thumbs
img').bind('click',function(){
var
$this
=
$(this);
$loader.show();
$('img
class="st_preview"/').load(function(){
var
$this
=
$(this);
var
$currImage
=
$('#st_main').children('img:first');
$this.insertBefore($currImage);
$loader.hide();
$currImage.fadeOut(2000,function(){
$(this).remove();
});
}).attr('src',$this.attr('alt'));
}).bind('mouseenter',function(){
$(this).stop().animate({'opacity':'1'});
}).bind('mouseleave',function(){
$(this).stop().animate({'opacity':'0.7'});
});
//隱藏當前已經(jīng)打開了的菜單的函數(shù)
function
hideThumbs(){
$list.find('li.current')
.animate({'height':'50px'},400,function(){
$(this).removeClass('current');
})
.find('.st_thumbs_wrapper')
.hide(200)
.andSelf()
.find('.st_link
span')
.addClass('st_arrow_down')
.removeClass('st_arrow_up');
}
//是當前的略縮圖div層滾動
//當鼠標移至菜單層的時候會自動地進行滾動
function
makeScrollable($outer,
$inner){
var
extra
=
800;
//獲取菜單的寬度
var
divWidth
=
$outer.width();
//移除滾動條
$outer.css({
overflow:
'hidden'
});
//查找容器上的最后一張圖片
var
lastElem
=
$inner.find('img:last');
$outer.scrollLeft(0);
//當用戶鼠標離開菜單的時候
$outer.unbind('mousemove').bind('mousemove',function(e){
var
containerWidth
=
lastElem[0].offsetLeft
+
lastElem.outerWidth()
+
2*extra;
var
left
=
(e.pageX
-
$outer.offset().left)
*
(containerWidth-divWidth)
/
divWidth
-
extra;
$outer.scrollLeft(left);
});
}
});
希望本文所述對大家的jQuery程序設計有所幫助。
這個用CSS讓導航固定就可以了,
#qq {
position:fixed; /* 固定位置 ie6不支持該屬性 */
top:0; /* 導航欄距離頂端為0像素 */
/*ie6下樣式,加下劃線表示只針對ie6 的hack (可百度 css hack百度百科)*/
_position:absolute; /* 把導航欄位置定義為絕對位置,這句是關鍵1 */
_top:expression(eval(document.documentElement.scrollTop)); /* 把導航欄位置放在瀏覽器垂直滾動條的頂端,這句是關鍵2 */
overflow:auto;
z-index:9999; /* 讓導航欄浮在網(wǎng)頁的高層位置,遇到flash和圖片時候也能始終保持最外層 */
}
*/
一個簡單的解決方案:頂端固定一個DIV作為導航容器,該DIV左端和右端分別用DIV模擬向左和向右的按鈕,中間區(qū)域呈現(xiàn)導航按鈕,計算當前位置,用模擬的按鈕控制左右滾動。
另,你說的手機端用手指滑動,在 HTML 中是由瀏覽器根據(jù)手勢觸控事件來支持的,jQuery 超越不了瀏覽器對 JS 的支持,因為 jQuery 就是 JS 的程序包。如果使用 Mouse 事件來實現(xiàn),也不是不可以,因為手勢觸控的本質(zhì)無非還是 Mouse 事件同源的衍生計算。費老鼻子勁使用 Mouse 事假實現(xiàn)一個有加速減速效果的導航滑動,不經(jīng)濟。供參考。
script?type="text/javascript"?src=""/script
script
(function()?{
new?Headroom(document.querySelector("#nav-scroll"),?{?//這里的nav-scroll改為你的導航欄的id或class
offset?:?5,?//?在元素沒有固定之前,垂直方向的偏移量(以px為單位)
tolerance:?5,?//?scroll?tolerance?in?px?before?state?changes????????
classes:?{
initial:?"animated",??//?當元素初始化后所設置的class
pinned:?"slideUp",?//?向上滾動時設置的class
unpinned:?"slideDown"?//?向下滾動時所設置的class
}
}).init();????
}());
/script
然后,加上樣式就可以了:
.animated?{position:?fixed;top:?0;left:?0;right:?0;transition:?all?.2s?ease-in-out;}
.animated?.slideDown?{top:?-100px;}
.animated?.slideUp?{top:?0;}
思路是獲取頁面滾動的位置 .scrollTop(),結合div的位置來判斷不同導航條的顯示
其實所謂的網(wǎng)頁滾動條固定就是一個簡單的判斷
function?scrollLis(){
var?toTop?=?offs.top-$(window).scrollTop();
if(toTop==0||toTop0){
if(!$('.fixed-div').hasClass('add-fixed-div'))$('.fixed-div').addClass('add-fixed-div');
}else{
$('.fixed-div').removeClass('add-fixed-div');
};
};
var?offs=$('.fixed-div').offset();
$(window).scroll(function(){
scrollLis();
});
我解釋下代碼:
在你的nav class 同時加入.fixed-div
然后在css樣式表中add-fixed-div寫上絕對定位
scrollLis 滾到.fixed-div的時候就會添加一個add-fixed-div 而add-fixed-div他里面有一個絕對定位的css (position:fixed)這樣就完成了導航固定了
在解釋下
var?offs=$('.fixed-div').offset();
$(window).scroll(function(){
scrollLis();
});
這個是判斷回滾的時候取消固定
文章題目:jquery滾動導航,jquery 滾動插件
地址分享:http://chinadenli.net/article15/dseocdi.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站導航、移動網(wǎng)站建設、定制網(wǎng)站、做網(wǎng)站、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)