Reputation: 137
I would like to show the top div on stop scroll and hide it when a user scrolls. I have the code working in the reverse, can someone work out how to reverse it so that the div shows on stop scroll and hides when the user scrolls.
$(window).scroll(function() {
$('top').stop(true, true).show().fadeOut('fast');
});
top {
position: fixed;
background: #000;
color: #eee;
right: 0;
top: 0;
padding: 10px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<top>Show me on scroll</top>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
Upvotes: 2
Views: 106
Reputation:
Use debounce function from underscore, or write own debounce function. Try this live demo. Is simple and IMO it provides best user experience:
var $hideMe = $('#imHiddenDuringScroll')
var hideIt = _ => {
$hideMe.fadeOut('fast')
showItLazy()
}
var showItLazy = _.debounce(_ => {
$hideMe.fadeIn('fast')
}, 350)
$(window).scroll(hideIt)
#imHiddenDuringScroll {
position: fixed;
background: #000;
color: #eee;
right: 0;
top: 0;
padding: 10px;
}
#longScrollableText {
width: 270px;
}
<script src="https://unpkg.com/[email protected]/dist/jquery.min.js"></script>
<script src="https://unpkg.com/[email protected]/underscore-min.js"></script>
<div id="imHiddenDuringScroll">I am hidden during scroll</div>
<div id="longScrollableText">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis ostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. uis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit met, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in rehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur dipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim eniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo onsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, unt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
Upvotes: 0
Reputation: 1442
Try this:
$(window).scroll(function() {
$('top').stop(true, true).hide().fadeIn('fast');
});
and css:
top {
position: fixed;
background: #000;
color: #eee;
right: 0;
top: 0;
padding: 10px;
display: block;
}
Upvotes: 2