css3 - 淘寶網(wǎng)上這種抵抗反彈的效果如何做?
問(wèn)題描述
https://jhs.m.taobao.com/m/index.htm?locate=icon-2&spm=a215s.7406091.1.icon-2&scm=2027.1.3.1001#!3000
上面的橫向滾動(dòng)條,滑到邊界就會(huì)有個(gè)拉伸的效果,然后再反彈回去用css3和js該怎么實(shí)現(xiàn)
問(wèn)題解答
回答1:局部滾動(dòng)的話 最簡(jiǎn)單的方法就是用 IScroll 。直接實(shí)例化 就可以。new IScroll('',) ''里面是選擇器。
回答2:下面的JS代碼可以作為參考,不僅可以實(shí)現(xiàn)回彈,還能反應(yīng)出來(lái)手勢(shì)的快速滑動(dòng)。
<script type='text/javascript'>//得到各種元素var nav = document.querySelector('nav');var navul = document.querySelector('nav ul');var navullis = document.querySelectorAll('nav ul li');var navW = parseInt(window.getComputedStyle(nav , null)[’width’]);//寬度navul.style.width = navullis.length * 82 +'px';nav.addEventListener('touchstart',touchstartHandler);nav.addEventListener('touchmove',touchmoveHandler);nav.addEventListener('touchend',touchendHandler);var startX;var nowX = 0;var dX;var lastTwoPoint = [0,0];//開(kāi)始滑動(dòng)function touchstartHandler(event){ navul.style.webkitTransition = 'none'; //去掉過(guò)渡 navul.style.transition = 'none'; //去掉過(guò)渡 startX = event.touches[0].pageX; //記錄起點(diǎn)}//滑動(dòng)過(guò)程function touchmoveHandler(event){ event.preventDefault(); dX = event.touches[0].pageX - startX; //差值 //反映差值 navul.style.webkitTransform = 'translateX(' + (nowX + dX) + 'px)'; navul.style.transform = 'translateX(' + (nowX + dX) + 'px)'; //記錄最后兩點(diǎn)的x值 lastTwoPoint.shift(); lastTwoPoint.push(event.touches[0].pageX);}//結(jié)束滑動(dòng)function touchendHandler(event){ nowX += dX; //多走最后兩點(diǎn)路程的5倍路程 nowX += (lastTwoPoint[1] - lastTwoPoint[0]) * 5; if(nowX > 0){nowX = 0; } if(nowX < -parseInt(navul.style.width) + navW){nowX = -parseInt(navul.style.width) + navW; } console.log(-parseInt(navul.style.width) + navW) //過(guò)渡時(shí)間 //非線性衰減 var t = Math.sqrt(Math.abs(lastTwoPoint[1] - lastTwoPoint[0])) / 10; navul.style.webkitTransition = 'all ' + t + 's cubic-bezier(0.1, 0.85, 0.25, 1) 0s'; navul.style.transition = 'all ' + t + 's cubic-bezier(0.1, 0.85, 0.25, 1) 0s'; //反映多走的5倍路程: navul.style.webkitTransform = 'translateX(' + nowX + 'px)'; navul.style.transform = 'translateX(' + nowX + 'px)';} </script>回答3:
iscroll 就能做這個(gè)效果。如果你是問(wèn)原生實(shí)現(xiàn)的話,可以去看看源碼。傳送門
回答4:你是說(shuō)彈性滾動(dòng)嗎
body{ overflow:scroll; -webkit-overflow-scrolling:touch}回答5:
最近我也在用IScroll 做項(xiàng)目,發(fā)現(xiàn)越多來(lái)安卓5.0以后的有部分手機(jī)不兼容,特別是在做單頁(yè)面的時(shí)候,最近我在用這個(gè)Swiper [1]: http://www.swiper.com.cn/ ,文檔是中文的,出了幾個(gè)版了,目前還沒(méi)有碰到有兼容的問(wèn)題
相關(guān)文章:
1. javascript - 百度echarts series數(shù)據(jù)更新問(wèn)題2. MySQL客戶端吃掉了SQL注解?3. python小白的基礎(chǔ)問(wèn)題 關(guān)于while循環(huán)的嵌套4. css3 - [CSS] 動(dòng)畫(huà)效果 3D翻轉(zhuǎn)bug5. javascript - JS設(shè)置Video視頻對(duì)象的currentTime時(shí)出現(xiàn)了問(wèn)題,IE,Edge,火狐,都可以設(shè)置,反而chrom卻...6. java - 我設(shè)置了cookie的max age,但是cookie依然在關(guān)閉游覽器后消失了7. java固定鍵值轉(zhuǎn)換,使用枚舉實(shí)現(xiàn)字典?8. php自學(xué)從哪里開(kāi)始?9. phpstady在win10上運(yùn)行10. 求大神幫我看看是哪里寫(xiě)錯(cuò)了 感謝細(xì)心解答
