пример jsfiddle
ваша функция JavaScript
//store the element
var $cache = $('.my-sticky-element');
//store the initial position of the element
var vTop = $cache.offset().top - parseFloat($cache.css('margin-top').replace(/auto/, 0));
$(window).scroll(function(event) {
// what the y position of the scroll is
var y = $(this).scrollTop() + $(window).height();
// whether that's below the form
if (y >= vTop) {
// if so, ad the fixed class
$cache.addClass('stuck');
} else {
// otherwise remove it
$cache.removeClass('stuck');
}
});
ваша CSS
.my-sticky-element.stuck {
position: fixed;
bottom: 0;
box-shadow: 0 2px 4px rgba(0, 0, 0, .3);
}
.my-sticky-element {
background-color: grey;
color: white;
font-family: sans-serif;
padding: 5px 20px;
width: 200px;
}
.container {
/*container for centering element*/
margin: 100px auto;
width: 200px;
}
body {
min-height: 1000px;
}
ваша HTML
<div class="container">
lorem 15<br /> lorem 14<br /> lorem 13<br /> lorem 12<br /> lorem 11<br /> lorem 10<br /> lorem 9<br /> lorem 8<br /> lorem 7<br /> lorem 6<br /> lorem 5<br /> lorem 4<br /> lorem 3<br /> lorem 2<br /> lorem 1<br /> lorem 1<br /> lorem 2<br /> lorem
3
<br /> lorem 4<br /> lorem 5<br /> lorem 6<br /> lorem 7<br /> lorem 8<br /> lorem 9<br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem
<br /> lorem <br />
<div class="my-sticky-element">This item will be stucked</div>
lorem 15<br /> lorem 14<br /> lorem 13<br /> lorem 12<br /> lorem 11<br /> lorem 10<br /> lorem 9<br /> lorem 8<br /> lorem 7<br /> lorem 6<br /> lorem 5<br /> lorem 4<br /> lorem 3<br /> lorem 2<br /> lorem 1<br /> lorem 1<br /> lorem 2<br /> lorem
3
<br /> lorem 4<br /> lorem 5<br /> lorem 6<br /> lorem 7<br /> lorem 8<br /> lorem 9<br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem <br /> lorem
<br /> lorem <br />
</div>
Как только ваша прокрутка перейдет к my-sticky-element
.offset (). Top ->, элемент будет исправлен, и он останется фиксированным, пока вы не прокрутите эту точку.