不知道在使用手機的時候,是否遇到過需要返回上一頁但是卻因為難以點擊返回鍵而感到煩躁。在這種情況下,使用JavaScript的側滑返回效果可以幫助用戶更方便地返回上一頁。
側滑返回的原理是:當用戶在手機上向右滑動屏幕時,頁面會自動返回上一頁。這里使用的主要是JavaScript中的觸屏事件(touch event)來實現。下面是一段實現側滑返回效果的代碼:
window.addEventListener('touchstart',function(e){ startX = e.touches[0].pageX; startY = e.touches[0].pageY; },false); window.addEventListener('touchmove',function(e){ if(e.touches.length > 1){ return; } var deltaX = e.touches[0].pageX - startX; var deltaY = e.touches[0].pageY - startY; if(Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0){ e.preventDefault(); } },false); window.addEventListener('touchend',function(e){ var deltaX = e.changedTouches[0].pageX - startX; var ratio = screen.width / 2; if(deltaX > ratio){ window.history.back(); } },false);
代碼的實現基本上是將touchstart、touchmove、touchend三個事件綁定在window對象中。在touchstart事件中,記錄手指開始觸摸屏幕的位置,并在touchmove事件中,通過計算手指移動的距離來判斷是否進行左右滑動,以及是否需要阻止頁面的默認滾動事件。在touchend事件中,則判斷手指在屏幕上移動的距離,當超過屏幕寬度的一半時,就會自動返回上一頁。
除了基本的實現方法,還可以通過CSS和動畫來優化側滑返回的效果。比如可以為返回的頁面添加一個滑入的動畫,或者為側滑返回的區域添加特定的樣式。下面是一個例子:
/* CSS */ body { overflow-x: hidden; } .transition { -webkit-transition: -webkit-transform 0.3s ease-out; transition: transform 0.3s ease-out; } /* JavaScript */ window.addEventListener('touchend',function(e){ var deltaX = e.changedTouches[0].pageX - startX; var ratio = screen.width / 2; if(deltaX > ratio){ document.body.classList.add('transition'); document.body.style.webkitTransform = 'translate3d(100%, 0, 0)'; window.history.back(); } },false);
這里的樣式變化主要是通過CSS3的變換效果來實現,可以看到,transform屬性通過將頁面向右平移100%來實現頁面向右滑動離開屏幕的效果。通過給body添加過渡效果,可以讓頁面滑動更加平滑自然。
使用JavaScript的側滑返回實現起來也比較容易,可以在頁面中加入一些常規的代碼,也可以在CSS樣式中加入一些動畫效果,以方便用戶使用。
上一篇css根據寬度設置樣式
下一篇css梯形圖畫點