手把手教你實(shí)現(xiàn)web頁面內(nèi)容滑動效果


事件監(jiān)聽
componentDidMount() {var teachingReportDiv = document.getElementById("teachingReport") as HTMLElement;teachingReportDiv.onmousedown = this.onMouseDown;teachingReportDiv.onmouseup = this.onMouseUp;teachingReportDiv.addEventListener('touchstart', this.onTouchStart, false);teachingReportDiv.addEventListener('touchmove', this.onTouchMove, false);teachingReportDiv.addEventListener('touchend', this.onTouchEnd, false);}
"teachingReport" onTouchStart={(event) => this.onTouchStart(event)}/>觸摸事件有以下幾個(gè):
touchstart事件:手指觸摸時(shí)候觸發(fā)(支持多指觸發(fā))touchmove事件:手指在滑動的時(shí)候連續(xù)地觸發(fā)。在這個(gè)事件發(fā)生期間,調(diào)用preventDefault()事件可以阻止?jié)L動,當(dāng)然也不能濫用否則會影響原有頁面的上下滾動等。touchend事件:手指從屏幕上離開的時(shí)候觸發(fā)touchcancel事件:當(dāng)系統(tǒng)停止跟蹤觸摸的時(shí)候觸發(fā)。關(guān)于這個(gè)事件的確切出發(fā)時(shí)間,文檔中并沒有具體說明。。。不建議使用事件處理
添加全局字段: locationStartX: number = 0;locationEndX: number = 0;滑動處理,超出滑動閾值后,更新相關(guān)狀態(tài)。 onTouchStart = (event) => {this.locationStartX = event.targetTouches[0].pageX;}onTouchMove = (event) => {// event.preventDefault();this.locationEndX = event.targetTouches[0].pageX;}onTouchEnd = (event) => {const locationChangedX = this.locationEndX < this.locationStartX;if (Math.abs(locationChangedX) > 10) {const isSlidingToRight=locationChangedX<0;}???}添加切換動畫
動畫,可以通過state參數(shù)觸發(fā) this.onTouchStart(event)}/>動畫數(shù)據(jù)參考://動畫@keyframes showFromLeft {from {opacity: 0;transform: translateX(-100px);}to {opacity: 1;transform: translateX(0px);}}@keyframes showFromRight {from {opacity: 0;transform: translateX(100px);}to {opacity: 1;transform: translateX(0px);}}@keyframes hideToLeft {from {opacity: 1;transform: translateX(0px);}to {opacity: 0;transform: translateX(-100px);}}@keyframes hideToRight {from {opacity: 1;transform: translateX(0px);}to {opacity: 0;transform: translateX(100px);}}?本文完~
評論
圖片
表情

