Skip to content

Instantly share code, notes, and snippets.

@intojs
Last active August 18, 2016 14:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save intojs/ef62829b160495427dcc8964f3b2c585 to your computer and use it in GitHub Desktop.
Save intojs/ef62829b160495427dcc8964f3b2c585 to your computer and use it in GitHub Desktop.
Navigate through a table like dom structure and highlight each element
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {
margin: 0;
padding: 0;
}
.row {
overflow: hidden;
margin-bottom: 5px;
}
.row > div {
width: 25%;
float: left;
padding: 20px;
box-sizing: border-box;
}
.row > div:nth-child(even) {
background-color: #EEE;
}
.row > div:nth-child(odd) {
background-color: #DDD;
}
.current {
background-color: yellow !important;
}
</style>
</head>
<body>
<div class="row">
<div class="start">right</div>
<div>down</div>
<div>right</div>
<div>down</div>
</div>
<div class="row">
<div>left</div>
<div>right</div>
<div>up</div>
<div>down</div>
</div>
<div class="row">
<div>right</div>
<div>down</div>
<div>left</div>
<div>left</div>
</div>
<div class="row">
<div>down</div>
<div>right</div>
<div>right</div>
<div>right</div>
</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.js"></script>
<script type="text/javascript">
'use strict';
function pointer(currentElement) {
currentElement.addClass('current');
let parent = currentElement.parent();
let nextElement;
switch (currentElement.html()) {
case 'right':
nextElement = currentElement.next();
break;
case 'left':
nextElement = currentElement.prev();
break;
case 'up':
nextElement = parent
.prev()
.find(currentElement.prop('tagName'))
.eq(currentElement.index());
break;
case 'down':
nextElement = parent
.next()
.find(currentElement.prop('tagName'))
.eq(currentElement.index());
break;
}
setTimeout(() => {
currentElement.removeClass('current');
if (nextElement.length > 0) {
pointer(nextElement);
}
}, 1500);
}
$(document).ready(() => {
let startElement = $('.start');
pointer(startElement);
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment