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
    });
}