Как сделать скролл до блока в jquery?

Пользователь

от nicolette.stoltenberg , в категории: JavaScript , 3 года назад

Как сделать скролл до блока в jquery?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 года назад

@nicolette.stoltenberg Вы можете использовать код ниже как пример чтобы сделать скролл до блока в jQuery. Используйте scrollTop() и координаты этого элемента от верха экрана:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<html>
<head>
    <meta charset="utf-8"/>
    <script src="https://code.jquery.com/jquery-2.0.1.js"></script>
    <style>
        #section1,
        #section2 {
            height: 1500px;
            width: 100px;
        }

        #section1 {
            background-color: #ff2b2a;
        }

        #section2 {
            background-color: #d4e157;
        }
    </style>
</head>
<body>
<div class="wrapper">
    <button class="go-to-div" data-id="section1">Go to div1</button>
    <button class="go-to-div" data-id="section2">Go to div2</button>
    <div id="section1">
        Блок 1
    </div>
    <br/>
    <div id="section2">
        Блок 2
    </div>
</div>
</body>
<script>
    $('.go-to-div').on('click', function () {
        let id = $(this).data('id');
        $(document.body).animate({
            scrollTop: $(`#${id}`).offset().top
        }, 1000);
    });
</script>
</html>


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от eryn.rodriguez , 2 года назад

@nicolette.stoltenberg 

Чтобы сделать скролл до блока в jQuery, можно использовать метод .animate() и задать свойство scrollTop.


Например, если у вас есть блок с id="myBlock", и вы хотите прокрутить страницу к этому блоку, можно использовать следующий код:

1
2
3
$('html, body').animate({
    scrollTop: $('#myBlock').offset().top
}, 1000);


Здесь мы используем селектор $('html, body'), чтобы прокрутить как html так и body, так как различные браузеры могут прокручивать разные элементы. Затем мы используем метод .animate() для анимированного скролла, устанавливаем свойство scrollTop на значение верхней границы блока $('#myBlock').offset().top, и задаем время анимации в миллисекундах, в данном случае 1000.


Вы можете изменять значение времени анимации и целевого блока, заменяя 1000 и #myBlock на нужные значения.