A simple touchscreen gesture recognition in pure JavaScript for single-cursor swipe up, down, left and right touch swipe detection. It is helpful for swipe to reveal/conceal menus (swipe on e.target) or wipe left/right to control slideshow position.
How to Create Touch Swipe Detection in Pure JavaScript
1. First of all, create the HTML structure as follows:
- <h1>Swipe to Detect Gestures<br><small>(touchscreen only)</small></h1>
- <div id="surface">
- <h2 id="output">Swipe here</h2>
- </div>
2. After that, add the following CSS styles to your project:
- html, body {
- width: 100%;
- height: 100%;
- margin: 0;
- font-family: sans-serif;
- color: #1c5706;
- background: #013;
- position: fixed;
- top: 0;
- left: 0;
- }
- h1, div {
- text-align: center;
- transition: opacity .5s ease-in-out;
- }
- #surface{
- width: 100%;
- height: 360px;
- background: #f2f2f2;
- border: 1px solid #ccc;
- padding: 20px;
- text-align: center;
- box-sizing: border-box;
- margin: 14px 0;
- }
3. Finally, add the following JavaScript code and done.
- var gesture = {
- x: [],
- y: [],
- match: ''
- },
- tolerance = 100,
- output = document.getElementById('output');
- var surface = document.getElementById('surface');
- surface.addEventListener('touchstart',function(e){
- e.preventDefault()
- for (i=0;i<e.touches.length;i++){
- var dot = document.createElement('em');
- dot.id = i
- dot.style.top = e.touches[i].clientY-25+'px'
- dot.style.left = e.touches[i].clientX-25+'px'
- document.body.appendChild(dot)
- gesture.x.push(e.touches[i].clientX)
- gesture.y.push(e.touches[i].clientY)
- }
- });
- surface.addEventListener('touchmove',function(e){
- e.preventDefault()
- for (var i=0; i<e.touches.length; i++) {
- var dot = document.getElementById(i);
- dot.style.top = e.touches[i].clientY-25+'px'
- dot.style.left = e.touches[i].clientX-25+'px'
- gesture.x.push(e.touches[i].clientX)
- gesture.y.push(e.touches[i].clientY)
- }
- });
- surface.addEventListener('touchend',function(e){
- var dots = document.querySelectorAll('em'),
- xTravel = gesture.x[gesture.x.length-1] - gesture.x[0],
- yTravel = gesture.y[gesture.y.length-1] - gesture.y[0];
- if (xTravel<tolerance && xTravel>-tolerance && yTravel<-tolerance){
- gesture.match = 'Swiped Up'
- }
- if (xTravel<tolerance && xTravel>-tolerance && yTravel>tolerance){
- gesture.match = 'Swiped Down'
- }
- if (yTravel<tolerance && yTravel>-tolerance && xTravel<-tolerance){
- gesture.match = 'Swiped Left'
- }
- if (yTravel<tolerance && yTravel>-tolerance && xTravel>tolerance){
- gesture.match = 'Swiped Right'
- }
- if (gesture.match!==''){
- output.innerHTML = gesture.match
- output.style.opacity = 1
- }
- setTimeout(function(){
- output.style.opacity = 1
- },500)
- gesture.x = []
- gesture.y = []
- gesture.match = xTravel = yTravel = ''
- for (i=0;i<dots.length;i++){
- dots[i].id = ''
- dots[i].style.opacity = 1
- setTimeout(function(){
- document.body.removeChild(dots[i])
- },1000)
- }
- })
That’s all! hopefully, you have successfully integrated this touch swipe detection code snippet into your project. If you have any questions or facing any issues, feel free to comment below.
Similar Code Snippets:

I code and create web elements for amazing people around the world. I like work with new people. New people new Experiences.
I truly enjoy what I’m doing, which makes me more passionate about web development and coding. I am always ready to do challenging tasks whether it is about creating a custom CMS from scratch or customizing an existing system.