最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js頁面滾動時層智能浮動定位實現(xiàn)(jQuery/MooTools)

 更新時間:2011年08月23日 23:35:35   作者:  
關(guān)于層的智能浮動效果早在幾年前我就在國外的一些個人網(wǎng)站的垂直導(dǎo)航上見到了,現(xiàn)在似乎在國內(nèi)一些商業(yè)網(wǎng)站上也屢見此效果

一、應(yīng)用展示
關(guān)于層的智能浮動效果早在幾年前我就在國外的一些個人網(wǎng)站的垂直導(dǎo)航上見到了,現(xiàn)在似乎在國內(nèi)一些商業(yè)網(wǎng)站上也屢見此效果,例如淘寶網(wǎng)的搜索結(jié)果頁的排序水平條,在默認(rèn)狀態(tài)下,滾動條跟隨頁面滾動,如下:

淘寶網(wǎng)搜索頁排序水平條 張鑫旭-鑫空間-鑫生活

隨著頁面向下滾動,當(dāng)此水平條接觸瀏覽器的上邊緣時,水平條獨立出來,不跟隨滾動條滾動了,如下圖所示:
淘寶網(wǎng)搜索頁水平條 張鑫旭-鑫空間-鑫生活

類似的效果在新浪微博上也有:
新浪微博上智能定位層 張鑫旭-鑫空間-鑫生活

當(dāng)頁面滾動,新動態(tài)提示開始要淡出瀏覽器窗口的時候,其浮動于瀏覽器窗口的最上沿顯示,如下圖所示:
新浪微博智能浮動層 張鑫旭-鑫空間-鑫生活

此效果實現(xiàn)原理其實很簡單,本文就將展示其實現(xiàn)。 

二、實現(xiàn)原理

默認(rèn)狀態(tài)就是默認(rèn)狀態(tài),什么事情也不用做,定位是absolute也好,static也好,都o(jì)k。關(guān)鍵是當(dāng)瀏覽器滾動的時候,對象(要浮動的層)要移除瀏覽器界面視區(qū)的時候,修改其position屬性,讓其浮動在窗口的上沿顯示就可以了。最好的position屬性就是fixed了,可以在IE6+和其他瀏覽器下浮動層平滑固定定位,由于IE6前輩不支持fixed屬性,所以,后退一步,使用absolute屬性代替,但是會有副作用——滾動不平滑。但,這也是沒有辦法的事情了。

現(xiàn)在關(guān)鍵就是如何判斷當(dāng)前層與瀏覽器窗口的上邊緣接觸呢?當(dāng)浮動層與瀏覽器窗口上邊緣接觸的一瞬間,其頁面垂直偏移值與頁面的滾動高度其實是一致的,所以,用這個進(jìn)行判斷就OK了,但是,如何獲得頁面上元素距離頁面的垂直距離呢?純粹的js代碼獲得此值還是比較麻煩的,好在JavaScript庫幫我們解決了這些工作,所以,我們的工作其實就很平坦,下面就將展示如何在jQuery庫以及MooTools庫下實現(xiàn)該效果。

三、jQuery下的層的智能浮動

方法代碼如下:

復(fù)制代碼 代碼如下:

$.fn.smartFloat = function() {
var position = function(element) {
var top = element.position().top, pos = element.css("position");
$(window).scroll(function() {
var scrolls = $(this).scrollTop();
if (scrolls > top) {
if (window.XMLHttpRequest) {
element.css({
position: "fixed",
top: 0
});
} else {
element.css({
top: scrolls
});
}
}else {
element.css({
position: "absolute",
top: top
});
}
});
};
return $(this).each(function() {
position($(this));
});
};

調(diào)用很簡單,直接一行代碼就ok了,例如下面:

$("#float").smartFloat();
妥妥兒的,就一小段綁定就實現(xiàn)了id為float的標(biāo)簽有了智能浮動功能,效果描述就是:當(dāng)id為float的元素在滾動的時候與瀏覽器上邊緣接觸時就不會再跟隨滾動條滾動了。

您可以狠狠地點擊這里:jQuery下的層的智能浮動demo

打開demo頁面,您會看到右側(cè)自詡羞澀的浮動層了,滾動頁面觀察效果:
jQuery智能浮動demo效果截圖 張鑫旭-鑫空間-鑫生活

四、MooTools下的層的智能浮動

與jQuery實現(xiàn)一樣,MooTools庫下也已經(jīng)將此方法包裝了起來,代碼如下:

復(fù)制代碼 代碼如下:

var $smartFloat = function(elements) {
var position = function(element) {
var top = element.getPosition().y, pos = element.getStyle("position");
window.addEvent("scroll", function() {
var scrolls = this.getScroll().y;
if (scrolls > top) {
if (window.XMLHttpRequest) {
element.setStyles({
position: "fixed",
top: 0
});
} else {
element.setStyles({
top: scrolls
});
}
}else {
element.setStyles({
position: "absolute",
top: top
});
}
});
};
if ($type(elements) === "array") {
return elements.each(function(items) {
position(items);
});
} else if ($type(elements) === "element") {
position(elements);
}
};

使用也是非常的簡單,就一句代碼,同樣以id為float的標(biāo)簽舉例,代碼如下:

$smartFloat($("float"));
您可以狠狠地點擊這里:MooTools下的層的智能浮動demo

滾動demo頁面的滾動條,當(dāng)“羞澀”的浮動層與瀏覽器邊緣“接觸”的時候,就不再跟隨滾動條滾動了,如下圖所示:
層的智能浮動demo頁面 張鑫旭-鑫空間-鑫生活
來自張鑫旭

相關(guān)文章

  • jquery獲取一組checkbox的值(實例代碼)

    jquery獲取一組checkbox的值(實例代碼)

    使用jquery獲取一組checkbox的值實例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • jQuery中:nth-child選擇器用法實例

    jQuery中:nth-child選擇器用法實例

    這篇文章主要介紹了jQuery中:nth-child選擇器用法,實例分析了:nth-child選擇器功能、定義及匹配子元素或奇偶元素的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • jQuery UI Autocomplete 體驗分享

    jQuery UI Autocomplete 體驗分享

    jQuery UI Autocomplete是jQuery UI的自動完成組件,是我用過的最強(qiáng)大、最靈活的Autocomplete,它支持本地的Array/JSON數(shù)組、通過ajax請求的Array/JSON數(shù)組、JSONP、以及Function(最靈活)等方式來獲取數(shù)據(jù)
    2012-02-02
  • 基于jquery的無縫循環(huán)新聞列表插件

    基于jquery的無縫循環(huán)新聞列表插件

    基于jquery的無縫循環(huán)新聞列表插件,需要的朋友可以參考下。
    2011-03-03
  • jQuery中table數(shù)據(jù)的值拷貝和拆分

    jQuery中table數(shù)據(jù)的值拷貝和拆分

    在開發(fā)的過程中,經(jīng)常會遇到彈出框顯示前一頁table列表的情況,這時候會有好多方法來來解決。下面小編給大家介紹怎么用jquery將值拷貝到第二頁并拆分拷貝的值,需要的朋友參考下
    2017-03-03
  • jQuery基于ajax實現(xiàn)頁面加載后檢查用戶登錄狀態(tài)的方法

    jQuery基于ajax實現(xiàn)頁面加載后檢查用戶登錄狀態(tài)的方法

    這篇文章主要介紹了jQuery基于ajax實現(xiàn)頁面加載后檢查用戶登錄狀態(tài)的方法,結(jié)合實例形式較為詳細(xì)分析了jQuery結(jié)合ajax進(jìn)行表單登陸驗證操作的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • jQuery AnythingSlider滑動效果插件

    jQuery AnythingSlider滑動效果插件

    2009年最受歡迎jQuery插件—AnythingSlider【滑動】
    2010-02-02
  • jQuery控制input只能輸入數(shù)字和兩位小數(shù)的方法

    jQuery控制input只能輸入數(shù)字和兩位小數(shù)的方法

    這篇文章主要介紹了jQuery控制input只能輸入數(shù)字和兩位小數(shù)的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • jQuery的attr與prop使用介紹

    jQuery的attr與prop使用介紹

    jQuery1.6中新添加了一個prop方法,看起來和用起來都和attr方法一樣,這兩個方法有什么區(qū)別呢?這要從HTMl 的attribute與property區(qū)別說起,attr與prop正是這兩個東西的縮寫
    2013-10-10
  • 深入理解jQuery3.0的domManip函數(shù)

    深入理解jQuery3.0的domManip函數(shù)

    domManip函數(shù)可以說是jquery中一個元老級工具函數(shù)了,domManip 的主要功能是為了實現(xiàn) DOM 的插入和替換。接下來通過本文給大家談?wù)刯Query3.0的domManip函數(shù)的理解,非常不錯,感興趣的朋友一起看看吧
    2016-09-09

最新評論

津南区| 德庆县| 区。| 无极县| 长春市| 武平县| 岢岚县| 盐城市| 彭水| 墨江| 开江县| 万安县| 北京市| 清镇市| 万载县| 祥云县| 二连浩特市| 道真| 龙岩市| 通海县| 临清市| 凤山市| 安溪县| 越西县| 南华县| 杨浦区| 玉山县| 洪雅县| 甘孜县| 汉阴县| 同德县| 长海县| 临漳县| 白沙| 昌吉市| 微山县| 岱山县| 本溪| 盐源县| 通河县| 富蕴县|