JSFiddle - React, Tailwind, and code Playground
by jeremyblalock
HTML
<div class='wrapper'>
<div class='nav-wrapper'>
<ul class='nav'>
<li><a href='#'>First Item</a></li>
<li><a href='#'>Second Item</a></li>
<li><a href='#'>Third Item</a></li>
<li><a href='#'>Fourth Item</a></li>
<li><a href='#'>Fifth Item</a></li>
<li><a href='#'>Sixth Item</a></li>
<li><a href='#'>Seventh Item</a></li>
</ul>
</div>
</div>
CSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Helvetica;
padding-top: 40px;
}
.wrapper {
margin: 20px;
position: relative;
height: 40px;
overflow: hidden;
}
.wrapper:before, .wrapper:after {
z-index: 2;
content: '';
display: block;
position: absolute;
top: 0;
bottom: 0;
width: 20px;
pointer-events: none;
}
.wrapper:after {
right: 0;
width: 20px;
background: -webkit-gradient(linear, left top, right top, color-stop(0, rgba(255, 255, 255, 0)), color-stop(1, #fff));
}
.wrapper:before {
left: 0;
width: 0;
background: -webkit-gradient(linear, right top, left top, color-stop(1, #fff), color-stop(0, rgba(255, 255, 255, 0)));
}
.wrapper.right-hover:before {
width: 20px;
}
.wrapper.right-hover:after {
width: 0;
}
.nav-wrapper {
width: 1000px;
}
.nav {
float: left;
position: relative;
left: 0;
-webkit-transition: all .4s;
}
li {
display: block;
float: left;
}
a {
display: block;
padding: 10px;
line-height: 20px;
color: #aaa;
text-decoration: none;
}
a:hover {
color: #000;
}
JavaScript
$(document).on('mousemove', '.wrapper', function(e) {
var min = $(this).offset().left,
max = min + $(this).outerWidth();
if (e.pageX > .1 * min + .9 * max) {
$('.wrapper').addClass('right-hover');
floatRight();
} else if (e.pageX < .9 * min + .1 * max) {
$('.wrapper').removeClass('right-hover');
floatLeft();
}
});
$(document).on('mouseleave', '.wrapper', function(e) {
$('.wrapper').removeClass('right-hover');
floatLeft();
});
function floatRight() {
var diff = $('.wrapper').width() - $('.nav').width();
console.log(diff);
$('.nav').css({
left: diff
});
}
function floatLeft() {
$('.nav').css({
left: 0
});
}