麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > HTML5 > 正文

Html5之title吸頂功能

2024-09-05 07:22:31
字體:
來源:轉載
供稿:網友

吸頂功能

吸頂是一種比較常見的交互效果,當頁面滑出屏幕邊界,標題會自動吸附在屏幕邊緣,用于提示用戶。

基本原理

在H5中實現的基本原理就是判斷當前頁面滑動的距離scrollTop和標題距離頁面頂部距離offsetTop的關系,進而設置標題的position = fixed。這里需要明白scrollTop和offsetTop屬性的含義。

scrollTop

代表在有滾動條時,滾動條向下滾動的距離也就是元素頂部被遮住部分的高度。在沒有滾動條時scrollTop==0恒成立。單位px,可讀可設置。

offsetTop

當前元素頂部距離最近父元素頂部的距離,和有沒有滾動條沒有關系。單位px,只讀元素。

所以,當scrollTop>offsetTop時,title的position = fixed,top = 0,使之固定在屏幕上方;當scrollTop < offsetTop,取消position = fixed,代碼如下:

 if (fixedDom[0].offsetTop - elementScrollTop < 0){            fixedDom.addClass("road-tab-fixed")          }else {            fixedDom.removeClass("road-tab-fixed")          }

效果如下:

優化

有圖看出基本功能實現的差不多了,但是感覺哪里怪怪的。當頁面向上滑時效果還是比較自然的,但是當頁面下滑時,只有當頁面完全滑到頂部時,標題才會回到原位,導致過度不自然,所以對于titile的position的設定要分兩種情況:上滑和下滑。

判斷上下滑動方向

判斷上下滑動點擊此處

當頁面上滑時

當scrollTop>offsetTop時,title的position = fixed,top = 0,使之固定在屏幕上方;

當頁面下滑時

當scrollTop<offsetTop時,取消掉fixed屬性,這樣就會使標題跟隨頁面滑動下來,交互更加自然了,

代碼如下:

if(beforeElementScrollTop - elementScrollTop <=0){//up            console.log('up');            if (beforeOffsetTop - elementScrollTop < 0){              fixedDom.addClass("road-tab-fixed")            }          }else{            console.log('down');            // console.log('beforeOffsetTop-----------',beforeOffsetTop);            // console.log('elementScrollTop--------------',elementScrollTop);            if (beforeOffsetTop - elementScrollTop >= 0){              fixedDom.removeClass("road-tab-fixed")            }          }

效果如下:

優化之scroll節流

當對頁面監聽了scroll事件后,滑動時scroll的回調會一直在執行,影響到頁面性能,而節流只允許一個函數在 X 毫秒內執行一次,只有當上一次函數執行后過了你規定的時間間隔,才能進行下一次該函數的調用。代碼如下

const fixedDom = $("#road-tab"),          isIos = utils.getMobileType(),          tabclass = "road-tab-fixed";        let beforeElementScrollTop = 0;        let beforeOffsetTop = fixedDom[0].offsetTop;        //scroll節流        const throttle = (func,wait,mustRun) => {          var timeout,            startTime = new Date();          return function() {            var context = this,              args = arguments,              curTime = new Date()            clearTimeout(timeout)            // 如果達到了規定的觸發時間間隔,觸發 handler            if(curTime - startTime >= mustRun){              beforeElementScrollTop = document.body.scrollTop;              console.log("beforelementScrollTop----------",document.body.scrollTop);              func.apply(context,args);              startTime = curTime              // 沒達到觸發間隔,重新設定定時器            }else{              timeout = setTimeout(func, wait)            }          }        }        const winScroll = (e) => {          const elementScrollTop=document.body.scrollTop;          console.log('elementScrollTop--------------',elementScrollTop);          if(beforeElementScrollTop - elementScrollTop <=0){//up            console.log('up');            if (beforeOffsetTop - elementScrollTop < 0){              fixedDom.addClass("road-tab-fixed")            }          }else{            if (beforeOffsetTop - elementScrollTop >= 0){console.log("UUUUUU");              fixedDom.removeClass("road-tab-fixed")            }          }        };        $(window).off("scroll").on("scroll", throttle(winScroll,10,100));

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产女厕一区二区三区在线视 | 国产免费视频一区二区裸体 | 国产成人精品一区二区仙踪林 | 国产免费观看a大片的网站 欧美成人一级 | 亚州综合网| www.99re14.com| 欧美精品黄色 | 黄色一级片免费观看 | 伊人久操视频 | av播播| 亚洲成人中文字幕在线 | 在线播放一区二区三区 | 在线视频 欧美日韩 | 免费看污视频在线观看 | 亚洲第一页在线观看 | 欧美激情在线播放 | 精品中文字幕在线观看 | 久久久久久久91 | 欧美a久久| 法国性xxx精品hd专区 | av91肉丝一区二区电影 | 国产亚洲精品久久久久久久久 | 激情在线免费观看 | 亚洲最新黄色网址 | 日产精品久久久一区二区开放时间 | 色播视频在线播放 | 法国性hdfreexxxx人妖 | 成人免费观看av | 粉嫩av一区二区三区四区在线观看 | 欧美成人精品不卡视频在线观看 | 91久久夜色精品国产网站 | 欧洲成人一区 | 久久久99精品视频 | 欧美一级爱操视频 | 亚洲最新色 | 日日鲁一鲁视频 | 女人叉开腿让男人桶 | 久久精品亚洲一区 | 国产成人精品免高潮在线观看 | 成人福利视频网站 | 精品久久久一二三区播放播放播放视频 |