lava lamp menu
TODO: to native js
by Oleh Kotsubko
HTML
loremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremlo...
SCSS
body {
background: #20262E;
word-break: break-word;
}
.list {
position: relative;
padding-left: 5px;
max-width: 200px;
border: 1px solid;
&__item {
&.active {
a {
color: #C52B2E;
}
}
a {
color: #fff;
text-decoration: none;
font-family: sans-serif;
padding: 5px 15px;
display: block;
}
}
}
#lava-stick {
position: absolute;
left: 0;
top: 0;
width: 3px;
height: 28px;
background: #C52B2E;
transition: .3s ease;
}
JavaScript
const containerOffsetTop = $('.list').offset().top;
const $stick = $('#lava-stick');
function checkActivePosition(){
let itemActiveOffset = $('.list__item.active').offset().top,
stickOffset = itemActiveOffset - containerOffsetTop;
$stick.css('top', stickOffset);
}
checkActivePosition();
$('.list').hover(function(){
$('.list__item').unbind('mouseover').on('mouseover', function(event){
let itemOffsetTop = $(this).offset().top,
y = itemOffsetTop - containerOffsetTop;
$('#lava-stick').css('top', y);
});
},function(){
checkActivePosition();
});
$('.list__item').on('click', function(){
$(this).addClass('active').siblings().removeClass('active');
});