導航選單固定頭部跟隨螢幕滾動jQuery外掛
阿新 • • 發佈:2019-01-23
(function($){ $.extend($.fn, { posfixed: function(configSettings){ var settings = { direction:"top", type:"while", hide:false, distance:0 }; $.extend(settings, configSettings); //initial if($.browser.msie&&$.browser.version==6.0){ $("html").css("overflow","hidden"); $("body").css({ height:"100%", overflow:"auto" }); } var obj = this; var initPos = $(obj).offset().top; var initPosLeft = $(obj).offset().left; var anchoredPos = settings.distance; if(settings.type=="while"){ if($.browser.msie&&$.browser.version==6.0){ $("body").scroll(function(event) { var objTop = $(obj).offset().top - $("body").scrollTop(); if(objTop<=settings.distance){ $(obj).css("position","absolute"); $(obj).css("top",settings.distance+"px"); $(obj).css("left",initPosLeft+"px"); } if($(obj).offset().top<=initPos){ $(obj).css("position","static"); } }); }else{ $(window).scroll(function(event) { if(settings.direction == "top"){ var objTop = $(obj).offset().top - $(window).scrollTop(); if(objTop<=settings.distance){ $(obj).css("position","fixed"); $(obj).css(settings.direction,settings.distance+"px"); } if($(obj).offset().top<=initPos){ $(obj).css("position","static"); } }else{ var objBottom = $(window).height() - $(obj).offset().top + $(window).scrollTop() - $(obj).outerHeight() ; if(objBottom<=settings.distance){ $(obj).css("position","fixed"); $(obj).css(settings.direction,settings.distance+"px"); } if($(obj).offset().top>=initPos){ $(obj).css("position","static"); } } }); } } if(settings.type=="always"){ if($.browser.msie&&$.browser.version==6.0){ if(settings.hide){ $(obj).hide(); } $("body").scroll(function(event) { if($("body").scrollTop()>300){ $(obj).fadeIn(200); }else{ $(obj).fadeOut(200); } }); $(obj).css("position","absolute"); $(obj).css(settings.direction,settings.distance+"px"); if(settings.tag!=null){ if(settings.tag.obj!=null){ if(settings.tag.direction=="right"){ $(obj).css("left",(settings.tag.obj.offset().left+settings.tag.obj.width()+settings.tag.distance)+"px"); $(window).resize(function(){ $(obj).css("left",(settings.obj.tag.offset().left+settings.tag.obj.width()+settings.tag.distance)+"px"); }); }else{ console.log(settings.tag.obj.offset().left-settings.tag.obj.width()-settings.tag.distance); $(obj).css("left",(settings.tag.obj.offset().left-$(obj).outerWidth()-settings.tag.distance)+"px"); $(window).resize(function(){ $(obj).css("left",(settings.tag.obj.offset().left-$(obj).outerWidth()-settings.tag.distance)+"px"); }); } }else{ $(obj).css(settings.tag.direction,settings.tag.distance+"px"); } } }else{ if(settings.hide){ $(obj).hide(); } $(window).scroll(function(event) { if($(window).scrollTop()>300){ $(obj).fadeIn(200); }else{ $(obj).fadeOut(200); } }); var objLeft = $(obj).offset().left; $(obj).css("position","fixed"); $(obj).css(settings.direction,settings.distance+"px"); if(settings.tag!=null){ if(settings.tag.obj!=null){ if(settings.tag.direction=="right"){ $(obj).css("left",(settings.tag.obj.offset().left+settings.tag.obj.width()+settings.tag.distance)+"px"); $(window).resize(function(){ $(obj).css("left",(settings.obj.tag.offset().left+settings.tag.obj.width()+settings.tag.distance)+"px"); }); }else{ console.log(settings.tag.obj.offset().left-settings.tag.obj.width()-settings.tag.distance); $(obj).css("left",(settings.tag.obj.offset().left-$(obj).outerWidth()-settings.tag.distance)+"px"); $(window).resize(function(){ $(obj).css("left",(settings.tag.obj.offset().left-$(obj).outerWidth()-settings.tag.distance)+"px"); }); } }else{ $(obj).css(settings.tag.direction,settings.tag.distance+"px"); } } } } } }); })(jQuery);
說明
Posfixed 能夠讓網頁的導航或表頭等固定在頂部或底部,讓使用者更方便的操作或檢視資訊,淘寶網、易迅網等電子商務網站常常用到這種效果。除了導航和表頭,也可以固定其他內容,比如廣告、返回頂部等等,同時 Posfixed 也可以作為 IE6 不支援 fixed 的一個解決方案。
本演示中,導航和右下的“返回頂部”使用了 Posfixed 外掛,請注意檢視效果。
使用
引入檔案
<script src="js/jquery.min.js"></script> <script src="js/posfixed.js"></script>
HTML
<div id="example1"> </div>
JavaScript
$(document).ready(function(){ $("#example1").posfixed({ distance:0, pos:"top", type:"while", hide:false }); });
引數
引數 | 型別 | 說明 | 預設值 |
---|---|---|---|
direction | 字串 | 方向,相對於頂部(top)或底部(bottom)固定 | top |
type | 字串 | 固定的方式,可選 while 或 always,while 為滾動條滾動到 distance 的數值時固定;always 為一直固定 | while |
hide | 布林值 | 是否自動隱藏固定的物件 | false |
distance | 整數 | 離頂部或底部的數值 | 0 |
tag | 物件 | 導航到一個元素 | null |
相容
Posfixed 相容以下瀏覽器:
- Firefox 2+
- Internet Explorer 6+
- Safari 2+
- Opera 9+
- Chrome