Плавная прокрутка Jquery

278
11 мая 2017, 12:25

Есть три кнопки в хэдере и каждая из них привязана к своему блоку на странице. Как мне поправить скрипт что бы при нажатии на кнопку был переход на нужный блок и он(блок) находился посредине окна?

$(document).ready(function() { 
  $("#header").on("click", "button", function(event) { 
    var id = $(this).attr('href'), 
      top = $(id).offset().top; 
    $('body,html').animate({ 
      scrollTop: top 
    }, 1500); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header id="header"> 
  <button href=".header">Home</button> 
  <button href="#joinTo">How join to?</button> 
  <button href=".form">Contact Us</button> 
</header>

Answer 1

Как насчет вычислять смещение по высоте? И если блок больше размера вьюпорта, не смещать. Что-то вроде этого:

$(document).ready(function() { 
  $("#header").on("click", "button", function(event) { 
    let id = $(this).attr('href'); 
    let top = $(id).offset().top; 
    let heightOffset = ($(window).height() - $(id).height()) / 2; // вычислили смещение по высоте 
    if (heightOffset < 0) heightOffset = 0; // проверили, что не отрицательное 
    let centerTop = top - heightOffset; // отняли смещение 
    $('body,html').animate({ 
      scrollTop: centerTop 
    }, 1500); 
  }); 
});
div { 
  height: 300px; 
} 
#joinTo, 
.form { 
  background-color: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header id="header"> 
  <button href="#header">Home</button> 
  <button href="#joinTo">How join to?</button> 
  <button href=".form">Contact Us</button> 
</header> 
<main> 
  <div></div> 
  <div id="joinTo"></div> 
  <div></div> 
  <div class="form"></div> 
  <div></div> 
</main>

READ ALSO
Проверка паролей на совпадение jQuery при вводе

Проверка паролей на совпадение jQuery при вводе

Пожалуйста помогите, никак разобраться не могуНужно на jQuery это всё сделать))

369
Использование jstl и EL в jQuery

Использование jstl и EL в jQuery

Есть необходимость при помощи jQuery подставить значение в src для <img src"">, но я использую страницу jsp и значение должно быть с использованием...

206
Как сравнить введенные данные с данными в базе Wordpress (ajax)?

Как сравнить введенные данные с данными в базе Wordpress (ajax)?

Мне нужно при вводе в input проверять есть ли в базе данных введенное значениеПодозреваю что у меня не работает вывод записей через wp_query на странице...

254
Умножать на jquery

Умножать на jquery

друзья есть span

729