成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

移動(dòng)端彈性滑動(dòng)以及vue記錄滑動(dòng)位置

wuyangnju / 1648人閱讀

摘要:在商品列表生命周期中,監(jiān)聽(tīng)當(dāng)前父元素的滾動(dòng)事件,滾動(dòng)時(shí)的回調(diào)中,獲取到滾動(dòng)條距離滾動(dòng)元素即的距離的值,存入到以及在中移除掉當(dāng)前滾動(dòng)事件的監(jiān)聽(tīng)。

-webkit-overflow-scrolling介紹
-webkit-overflow-scrolling: auto  |  touch;

auto: 普通滾動(dòng),當(dāng)手指從觸摸屏上移開(kāi),滾動(dòng)立即停止
touch:滾動(dòng)回彈效果,當(dāng)手指從觸摸屏上移開(kāi),內(nèi)容會(huì)保持一段時(shí)間的滾動(dòng)效果,繼續(xù)滾動(dòng)的速度和持續(xù)的時(shí)間和滾動(dòng)手勢(shì)的強(qiáng)烈程度成正比。同時(shí)也會(huì)創(chuàng)建一個(gè)新的堆棧上下文。

兼容寫(xiě)法
over-flow: auto;     /* winphone8和android4+ */
-webkit-overflow-scrolling: touch;    /* ios5+ */
如何使用

上代碼:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
.scrollContainer{
    width: 100px;
    height: 50px;   
    -webkit-overflow-scrolling: touch;
    overflow-y: auto;       
    overflow-x: hidden;    
}
.scrollContainer>ul>li{
    height: 20px;
    width: 100%;
}
可能會(huì)出現(xiàn)的bug

父級(jí)元素scrollContainer加上定位position: absolute|relative,滑動(dòng)幾次后可滾動(dòng)區(qū)域會(huì)卡主,不能在滑動(dòng)

快速滑動(dòng)頁(yè)面會(huì)出現(xiàn)空白,滑動(dòng)停止后內(nèi)容才顯示

此時(shí),你應(yīng)該給父級(jí)元素scrollContainer加上如下代碼:

//解決第一個(gè)bug
z-index:1;    

//解決第二個(gè)bug
-webkit-backface-visibility: hidden;    
-webkit-transform: translate3d(0,0,0);
需求

在vue項(xiàng)目中,我們可能會(huì)遇到這樣的需求,例如:

商品列表頁(yè)中,點(diǎn)擊某一商品,進(jìn)入到詳情頁(yè)。

從詳情頁(yè)中返回到商品列表頁(yè),頁(yè)面應(yīng)當(dāng)顯示的頁(yè)面應(yīng)當(dāng)是之前的樣子。

也就是說(shuō),滾動(dòng)條的位置應(yīng)該緩存下來(lái);

思路

商品列表需要被緩存下來(lái),頁(yè)面的緩存方式請(qǐng)查看vue官方文檔keep-alive來(lái)緩存頁(yè)面,這樣,在詳情頁(yè)面返回的時(shí)候,頁(yè)面不至于重新加載。

在商品列表生命周期activated中,監(jiān)聽(tīng)當(dāng)前scrollContainer父元素的滾動(dòng)事件,滾動(dòng)時(shí)的回調(diào)中,獲取到scrollTop(滾動(dòng)條距離滾動(dòng)元素即scrollContainer的距離)的值,存入到以及在deactivated中移除掉當(dāng)前滾動(dòng)事件的監(jiān)聽(tīng)。

在商品列表中,點(diǎn)擊進(jìn)入詳情頁(yè)中的時(shí)候,將滾動(dòng)條位置被緩存下來(lái)了,你可以放到sessionStorage|localStorage中。當(dāng)然,如果你使用了vuex,可以直接將值放入vuex中進(jìn)行管理;

從詳情頁(yè)中返回的時(shí)候,同時(shí)要做這樣的操作,將你存入緩存中的scrollTop值重新賦予給當(dāng)前div的滾動(dòng)條

Ok,思路就是這樣子,大功告成。

vue中具體實(shí)現(xiàn)

我是用的vuex進(jìn)行管理的滾動(dòng)條位置,實(shí)現(xiàn)代碼如下:

//加了一個(gè)ref,用于獲取當(dāng)前dom
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
computed:{
    ...mapGetters([
          "home_list_top"    //vuex中的存放的滾動(dòng)條的位置
    ])
}
...
methods:{
    recordScrollPosition(e) {
      this.$store.dispatch("setHomeListTop",e.target.scrollTop);    //實(shí)時(shí)存入到vuex中
    }
}
...
activated(){  //滾動(dòng)條位置的監(jiān)聽(tīng)放到activated是因?yàn)榇隧?yè)面被keep-alive緩存了
    this.$refs.scroll.scrollTop = this.home_list_top;        //this.$refs.scroll拿到滾動(dòng)的dom,即scrollContainer,this.home_list_top是存入到vuex里的值
    this.$refs.scroll.addEventListener("scroll",this.recordScrollPosition);    //添加綁定事件
},
deactivated(){  //keep-alive 的頁(yè)面跳轉(zhuǎn)時(shí),移除scroll事件
    this.$refs.scroll.removeEventListener("scroll",this.recordScrollPosition);  //清除綁定的scroll事件
}
后話
如果有更好的辦法,互相交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92507.html

相關(guān)文章

  • 移動(dòng)彈性滑動(dòng)以及vue記錄滑動(dòng)位置

    摘要:在商品列表生命周期中,監(jiān)聽(tīng)當(dāng)前父元素的滾動(dòng)事件,滾動(dòng)時(shí)的回調(diào)中,獲取到滾動(dòng)條距離滾動(dòng)元素即的距離的值,存入到以及在中移除掉當(dāng)前滾動(dòng)事件的監(jiān)聽(tīng)。 -webkit-overflow-scrolling介紹 -webkit-overflow-scrolling: auto | touch; auto: 普通滾動(dòng),當(dāng)手指從觸摸屏上移開(kāi),滾動(dòng)立即停止touch:滾動(dòng)回彈效果,當(dāng)手指從觸摸屏上...

    charles_paul 評(píng)論0 收藏0
  • 移動(dòng)VUE點(diǎn)擊、滑動(dòng)和長(zhǎng)按等事件處理(自定義指令)

    摘要:?jiǎn)栴}移動(dòng)設(shè)備上的觸摸事件如何利用它們?nèi)齻€(gè)來(lái)處理點(diǎn)擊長(zhǎng)按滑動(dòng)等操作,以及如何在測(cè)試用例中模擬它們的操作參考了實(shí)現(xiàn)方法上這位大哥的思路移動(dòng)設(shè)備的點(diǎn)擊優(yōu)化參考了感謝解決使用自定義指令來(lái)干這件事來(lái)記錄開(kāi)始點(diǎn)擊的位置和時(shí)間,并在這里邊判斷長(zhǎng)按操作來(lái)確 問(wèn)題: 移動(dòng)設(shè)備上的觸摸事件:touchstart、touchmove、touchend如何利用它們?nèi)齻€(gè)來(lái)處理點(diǎn)擊、長(zhǎng)按、滑動(dòng)等操作,以及如何在測(cè)...

    niuxiaowei111 評(píng)論0 收藏0
  • vue移動(dòng)側(cè)滑面板組件

    摘要:里邊涉及到的指令是自定義的指令,為了處理移動(dòng)端的點(diǎn)擊操作,我還整理了一片陋文移動(dòng)點(diǎn)擊長(zhǎng)按滑動(dòng)指令然后這個(gè)組件的源碼我放在了我出來(lái)的項(xiàng)目上謝謝各位品嘗, 以下這段都是廢話,請(qǐng)?zhí)^(guò) 公司移動(dòng)端開(kāi)發(fā)平臺(tái)進(jìn)行了大變革,前端架構(gòu)由DCloud大生態(tài)轉(zhuǎn)換為VUE,所以移動(dòng)端的UI組件庫(kù)從MUI改為使用MintUI,然后開(kāi)始大刀闊斧的把MintUI組件改成MUI組件的樣子,然后發(fā)現(xiàn)少了幾個(gè)較為常用的...

    TNFE 評(píng)論0 收藏0
  • Vue全家桶商城全站升級(jí)之引入HTTPS,PWA,錯(cuò)誤監(jiān)控,持續(xù)構(gòu)建。

    摘要:免費(fèi)升級(jí)到升級(jí)到后,服務(wù)器可以開(kāi)啟版本,對(duì)比性能和緩存各方面要更好,還有其他新特性,可以啟動(dòng)功能,更好的進(jìn)行離線緩存,更好的離線體驗(yàn)。 showImg(https://segmentfault.com/img/remote/1460000012773891?w=370&h=661); 在線地址:https://fancy.czero.cn 手機(jī)掃描二維碼查看: showImg(http...

    zengdongbao 評(píng)論0 收藏0
  • vue.js 移動(dòng)音樂(lè)app(一) 基礎(chǔ)組件 scroll

    一、 基礎(chǔ)實(shí)現(xiàn) (1)功能 對(duì) better-scroll 插件的基本封裝,實(shí)現(xiàn)移動(dòng)端的滾動(dòng) (2)實(shí)現(xiàn) 引入 better-scroll props probeType: better-scroll 配置項(xiàng)之一 (1)取值: 1 滾動(dòng)的時(shí)候會(huì)派發(fā) scroll 事件,會(huì)截流。 2 滾動(dòng)的時(shí)候?qū)崟r(shí)派發(fā) scroll 事件,不會(huì)截流。 3 除了實(shí)時(shí)派發(fā) scroll 事件,在 swipe 的情況...

    wqj97 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<