<div class='wall' page='1' style='background:blue;left:0;'></div >
<div class='wall' page='2' style='background:green;left:100vw;'></div >
<div class='wall' page='3' style='background:red;left:-100vw;'></div >
.wall{
position:fixed;
width:100vw;
height:100vh;
}
if(!HTMLElement.prototype.swipe){
Object.defineProperty(HTMLElement.prototype, "swipe", {
configurable: true,
enumerable: false,
writable: true,
value: function(direction,callback,sensitivity) {
const self = this;
const sens = Object.prototype.toString.call(sensitivity)!=='[object Number]' || sensitivity <= 0 ? 5 : sensitivity;
switch(direction){
case 'left':
self.addEventListener('touchstart', function (event) {
self.removeEventListener("touchstart",null,false);
var position = event.changedTouches[0].pageX;
self.addEventListener('touchend', function (event) {
self.removeEventListener("touchend",null,false);
if (event.changedTouches[0].pageX < position - screen.width / sens){
callback(self);
}
position = 0;
});
},false);
break;
case 'right':
self.addEventListener('touchstart', function (event) {
self.removeEventListener("touchstart",null,false);
var position = event.changedTouches[0].pageX;
self.addEventListener('touchend', function (event) {
self.removeEventListener("touchend",null,false);
if(event.changedTouches[0].pageX > position + screen.width / sens){
callback(self);
}
position = screen.width;
});
},false);
break;
case 'up':
self.addEventListener('touchstart', function (event) {
self.removeEventListener("touchstart",null,false);
var position = event.changedTouches[0].pageY;
self.addEventListener('touchend', function (event) {
self.removeEventListener("touchend",null,false);
if(event.changedTouches[0].pageY < position - screen.height / sens){
callback(self);
}
position = 0;
});
},false);
break;
case 'down':
self.addEventListener('touchstart', function (event) {
self.removeEventListener("touchstart",null,false);
var position = event.changedTouches[0].pageY;
self.addEventListener('touchend', function (event) {
self.removeEventListener("touchend",null,false);
if(event.changedTouches[0].pageY > position + screen.height / sens){
callback(self);
}
position = screen.height;
});
},false);
break;
}
}
});
}
$('.wall').each(function(){
this.swipe('left',function(dom){
const page = Number($(dom).attr('page'));
const next = page + 1 > 3 ? 1 : page + 1;
const prev = page - 1 < 1 ? 3 : page - 1;
$(dom).animate({'left':'-100vw'},500);
$('.wall[page='+next+']').animate({'left':'0'},400);
$('.wall[page='+prev+']').css({'left':'100vw'});
},10); //<-- 画面サイズ/10の動作で発火
this.swipe('right',function(dom){
const page = Number($(dom).attr('page'));
const next = page - 1 < 1 ? 3 : page - 1;
const prev = page + 1 > 3 ? 1 : page + 1;
$(dom).animate({'left':'100vw'},500);
$('.wall[page='+next+']').animate({'left':'0'},400);
$('.wall[page='+prev+']').css({'left':'-100vw'});
},10);
});
This Pen doesn't use any external CSS resources.