Как сделать div фиксированным после прокрутки до этого div?

Как сделать так, чтобы div оставался фиксированным после прокрутки к этому div? У меня есть div который позже на странице, и вам нужно прокрутить, чтобы добраться до этого div.

Если я использую:

.divname {
  position: fixed;
}

div появится раньше, чем должно появиться в обычном режиме. Может быть, хороший пример того, что мне нужно, это второе объявление на 9gag. Если ваше разрешение экрана достаточно низкое, вы не увидите это объявление после загрузки первой страницы, но после прокрутки вниз вы увидите второе объявление, и оно останется фиксированным, пока вы будете прокручивать страницу вниз.

Ответ 1

Я знаю, что это только тег html/css, но вы не можете сделать это только с помощью css. Самый простой способ - использовать jQuery.

var fixmeTop = $('.fixme').offset().top;       // get initial position of the element

$(window).scroll(function() {                  // assign scroll event listener

    var currentScroll = $(window).scrollTop(); // get current position

    if (currentScroll >= fixmeTop) {           // apply position: fixed if you
        $('.fixme').css({                      // scroll to that element or below it
            position: 'fixed',
            top: '0',
            left: '0'
        });
    } else {                                   // apply position: static
        $('.fixme').css({                      // if you scroll above it
            position: 'static'
        });
    }

});

http://jsfiddle.net/5n5MA/2/

Ответ 2

Функция jquery наиболее важна

<script>
$(function(){
    var stickyHeaderTop = $('#stickytypeheader').offset().top;

    $(window).scroll(function(){
            if( $(window).scrollTop() > stickyHeaderTop ) {
                    $('#stickytypeheader').css({position: 'fixed', top: '0px'});
                    $('#sticky').css('display', 'block');
            } else {
                    $('#stickytypeheader').css({position: 'static', top: '0px'});
                    $('#sticky').css('display', 'none');
            }
    });
});
</script>

Затем используйте JQuery Lib...

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

Теперь используйте HTML

<div id="header">
    <p>This text is non sticky</p>
    <p>This text is non sticky</p>
    <p>This text is non sticky</p>
    <p>This text is non sticky</p>
 </div>

<div id="stickytypeheader">
 <table width="100%">
  <tr>
    <td><a href="http://growthpages.com/">Growth pages</a></td>

    <td><a href="http://google.com/">Google</a></td>

    <td><a href="http://yahoo.com/">Yahoo</a></td>

    <td><a href="http://www.bing.com/">Bing</a></td>

    <td><a href="#">Visitor</a></td>
  </tr>
 </table>
</div>

<div id="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing 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>
</div>

Отметьте ДЕМО ЗДЕСЬ

Ответ 3

<script>
if($(window).width() >= 1200){
    (function($) {
        var element = $('.to_move_content'),
            originalY = element.offset().top;

        // Space between element and top of screen (when scrolling)
        var topMargin = 10;

        // Should probably be set in CSS; but here just for emphasis
        element.css('position', 'relative');

        $(window).on('scroll', function(event) {
            var scrollTop = $(window).scrollTop();

            element.stop(false, false).animate({
                top: scrollTop < originalY
                    ? 0
                    : scrollTop - originalY + topMargin
            }, 0);
        });
    })(jQuery);
}

Попробуйте это! просто добавьте класс .to_move_content к вам div

Ответ 4

это сработало для меня

$(document).scroll(function() {
    var y = $(document).scrollTop(), //get page y value 
        header = $("#myarea"); // your div id
    if(y >= 400)  {
        header.css({position: "fixed", "top" : "0", "left" : "0"});
    } else {
        header.css("position", "static");
    }
});

Ответ 5

Это возможно с CSS3. Просто используйте position: sticky, как показано здесь.

position: -webkit-sticky; /* Safari & IE */
position: sticky;
top: 0;

Ответ 6

Как заставить div оставаться фиксированным после прокрутки до этого div? У меня есть div, который находится позже на странице, и вам нужно прокрутить, чтобы перейти к этому div.

div появится перед тем, как он появится нормально. Возможно, хорошим примером того, что мне нужно, является второе объявление на 9gag. Если ваше разрешение экрана достаточно низкое, вы не увидите это объявление после загрузки первой страницы, но после прокрутки вниз вы увидите второе объявление и оно останется фиксированным, пока вы прокрутите вниз.

Please Visit the link




http://jsfiddle.net/adilimran505/zckcLog3/3/