摘要:在商品列表生命周期中,監(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è)新的堆棧上下文。
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
摘要:在商品列表生命周期中,監(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)手指從觸摸屏上...
摘要:?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è)...
摘要:里邊涉及到的指令是自定義的指令,為了處理移動(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è)較為常用的...
摘要:免費(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...
一、 基礎(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 的情況...
閱讀 1845·2021-11-23 09:51
閱讀 1303·2021-11-18 10:02
閱讀 974·2021-10-25 09:44
閱讀 2114·2019-08-26 18:36
閱讀 1634·2019-08-26 12:17
閱讀 1158·2019-08-26 11:59
閱讀 2755·2019-08-23 15:56
閱讀 3367·2019-08-23 15:05