真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HTML5怎么實(shí)現(xiàn)單頁(yè)面手勢(shì)滑屏切換

這篇文章主要介紹HTML5怎么實(shí)現(xiàn)單頁(yè)面手勢(shì)滑屏切換,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、青島網(wǎng)站維護(hù)、網(wǎng)站推廣。

H5單頁(yè)面手勢(shì)滑屏切換是采用HTML5 觸摸事件(Touch) 和 CSS3動(dòng)畫(huà)(Transform,Transition)來(lái)實(shí)現(xiàn)的

1、實(shí)現(xiàn)原理

假設(shè)有5個(gè)頁(yè)面,每個(gè)頁(yè)面占屏幕100%寬,則創(chuàng)建一個(gè)DIV容器viewport,將其寬度(width) 設(shè)置為500%,然后將5個(gè)頁(yè)面裝入容器中,并讓這5個(gè)頁(yè)面平分整個(gè)容器,最后將容器的默認(rèn)位置設(shè)置為0,overflow設(shè)置為hidden,這樣屏幕就默認(rèn)顯示第一個(gè)頁(yè)面。

頁(yè)面-1

頁(yè)面-2

頁(yè)面-3

頁(yè)面-4

頁(yè)面-5

CSS樣式:

.viewport{
   width: 500%;
   height: 100%;
   display: -webkit-box;
   overflow: hidden;
   //pointer-events: none; //這句話會(huì)導(dǎo)致整個(gè)頁(yè)面上的點(diǎn)擊事件失效,如需綁定點(diǎn)擊事件,請(qǐng)注掉
   -webkit-transform: translate3d(0,0,0);
   backface-visibility: hidden;
   position: relative;
}

注冊(cè)touchstart,touchmove和touchend事件,當(dāng)手指在屏幕上滑動(dòng)時(shí),使用CSS3的transform來(lái)實(shí)時(shí)設(shè)置viewport的位置,比如要顯示第二個(gè)頁(yè)面,就設(shè)置viewport的transform:translate3d(100%,0,0) 即可, 在這里我們使用translate3d來(lái)代替translateX,translate3d可以主動(dòng)開(kāi)啟手機(jī)GPU加速渲染,頁(yè)面滑動(dòng)更流暢。

2、主要思路

從手指放在屏幕上、滑動(dòng)操作、再到離開(kāi)屏幕是一個(gè)完整的操作過(guò)程,對(duì)應(yīng)的操作會(huì)觸發(fā)如下事件:

手指放在屏幕上:ontouchstart

手指在屏幕上滑動(dòng):ontouchmove

手指離開(kāi)屏幕:ontouchend

我們需要捕獲觸摸事件的這三個(gè)階段來(lái)完成頁(yè)面的滑動(dòng):

ontouchstart: 初始化變量, 記錄手指所在的位置,記錄當(dāng)前時(shí)間

/*手指放在屏幕上*/
document.addEventListener("touchstart",function(e){
   e.preventDefault();
   var touch = e.touches[0];
   startX = touch.pageX;
   startY = touch.pageY;
   initialPos = currentPosition;   //本次滑動(dòng)前的初始位置
   viewport.style.webkitTransition = ""; //取消動(dòng)畫(huà)效果
   startT = new Date().getTime(); //記錄手指按下的開(kāi)始時(shí)間
   isMove = false; //是否產(chǎn)生滑動(dòng)
}.bind(this),false);

ontouchmove: 獲得當(dāng)前所在位置,計(jì)算手指在屏幕上的移動(dòng)差量deltaX,然后使頁(yè)面跟隨移動(dòng)

/*手指在屏幕上滑動(dòng),頁(yè)面跟隨手指移動(dòng)*/
document.addEventListener("touchmove",function(e){
   e.preventDefault();
   var touch = e.touches[0];
   var deltaX = touch.pageX - startX;
   var deltaY = touch.pageY - startY;
   //如果X方向上的位移大于Y方向,則認(rèn)為是左右滑動(dòng)
   if (Math.abs(deltaX) > Math.abs(deltaY)){
       moveLength = deltaX;
       var translate = initialPos + deltaX; //當(dāng)前需要移動(dòng)到的位置
       //如果translate>0 或 < maxWidth,則表示頁(yè)面超出邊界
       if (translate <=0 && translate >= maxWidth){
           //移動(dòng)頁(yè)面
           this.transform.call(viewport,translate);
           isMove = true;
       }
       direction = deltaX>0?"right":"left"; //判斷手指滑動(dòng)的方向
   }
}.bind(this),false);

以上是HTML5怎么實(shí)現(xiàn)單頁(yè)面手勢(shì)滑屏切換的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)題目:HTML5怎么實(shí)現(xiàn)單頁(yè)面手勢(shì)滑屏切換
文章位置:http://weahome.cn/article/jsidee.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部