js頁面滾動時層智能浮動定位實現:


 

案例展示:

第一個:每個人都有看過的淘寶頁面:

 

案例就不多說了,有興趣的可以多去找找,

這樣的智能浮動效果還是不錯的,挺方便。

 

基本的實現原理:

        首先有一個默認狀態就是沒有滾動的時候,什么事情也不用做,定位可以是absolute,也可以是stati,fixed,relartive 這些都可以。我們主要需要關注的是當瀏覽器滾動的時候,(要浮動的塊)要移除瀏覽器界面視區的時候,修改其position屬性,讓其浮動在窗口的上沿顯示就可以了。最好的position屬性就是fixed了,可以在IE6+和其他瀏覽器下浮動層平滑固定定位,由於IE6前輩不支持fixed屬性,所以,后退一步,使用absolute屬性代替,但是會有副作用——滾動不平滑。但,這也是沒有辦法的事情了。

現在關鍵就是如何判斷當前層與瀏覽器窗口的上邊緣接觸呢?當浮動層與瀏覽器窗口上邊緣接觸的一瞬間,其頁面垂直偏移值與頁面的滾動高度其實是一致的,所以,用這個進行判斷就OK了,但是,如何獲得頁面上元素距離頁面的垂直距離呢?純粹的js代碼獲得此值還是比較麻煩的,好在JavaScript庫幫我們解決了這些工作。

 

jQuery下的層的智能浮動

方法代碼如下:

$.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));                         
    });
};

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

$("#float").smartFloat();

妥妥兒的,就一小段綁定就實現了id為float的標簽有了智能浮動功能,效果描述就是:當id為float的元素在滾動的時候與瀏覽器上邊緣接觸時就不會再跟隨滾動條滾動了。

代碼都出來應該會使用了唄。

html代碼就可以隨便寫了

比如用div實現:

<div class="float" id="float"> 這是需要浮動的內容。
</div>


js頁面滾動時層智能浮動定位實現: 文章來源:微信jingfeng18
web前端開始視頻大全:http://www.qianduanshiping.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM