JavaScript для верстальщика. Урок 04. Создание плавного скролла
Просмотр информации о событиях в jQuery - http://api.jquery.com/category/events/
основные события click и hover
Отслеживаем событие клик и меняем текст для проверки:
$ (".js-get-started").on("click", function(){
$ (this).text("Test");
})
Конструкция $ (this) заменила $ (".js-get-started"). Так как мы находимся внутри события, связанного с этой кнопкой, повторно указывать её селектор не нужно. This означает, что речь идёт о том же самом элементе. по которому был сделан клик.
Предыдущую конструкцию можно сократить:
$ (".js-get-started").click(function(){
$ (this).text("Test");
})
Для сравнения. В vanilla js, не использующем библиотеку jQuery, событие клика отслеживается так:
var getStarted = document.querySelector(".js-get-started");
getStarted.addEventListener("click", function(){
// про смену текста я ещё не знаю
});
Трудно не заметить сходства конструкций, только в jQuery они намного короче. Это и есть то. что является девизом jQuery: write less, do more.
Отмена события по умолчанию
$ (".js-get-started").on("click", function(event){
event.preventDefault();
// здесь продолжение кода
})
Точно так же: event.preventDefault(); выглядит отмена события по умолчанию и в vanilla js.
Таким образом, знание jQuery поможет освоить js, точно так же как базовые знания js позволят более осознанно учить jQuery. И это не удивительно, если вспомнить, что jQuery это и есть js-библиотека.
Измеряем расстояние до блока
Чтобы проскроллить страницу до определённого блока, нужно получить расстояние от верха страницы до этого блока. Присваиваем блоку id = "js-plans"
Отступ блока от верха браузера:
$("#js-plans").offset().top;
Проверяем: присваиваем переменную и выводи её значение в консоль браузера:
var plansOffset = $("#js-plans").offset().top;
console.log(plansOffset);
console.log(plansOffset);
Функция плавного скролла
$("html, body").animate({scrollTop: plansOffset
}, 500);
Здесь последнее число - время скролла в миллисекундах. Можно его увеличивать или уменьшать.
Код полностью:
$(function() {
$ (".js-get-started").on("click", function(event){
event.preventDefault();
var plansOffset = $("#js-plans").offset().top;
$("html, body").animate({
scrollTop: plansOffset
}, 5000);
})
});
$ (".js-get-started").on("click", function(event){
event.preventDefault();
var plansOffset = $("#js-plans").offset().top;
$("html, body").animate({
scrollTop: plansOffset
}, 5000);
})
});