#javascript #html #jquery
Вопрос:
Я работал над этим некоторое время и в значительной степени заблудился. Для второй части кода (которая помечена) у меня есть тег привязки (< a >) с именем класса < a>. Я хочу создать плавную прокрутку к элементу с помощью имени класса. Мне нужно использовать jquery в соответствии с тем, что от меня требуется. Я попробовал другой метод и, похоже, не могу заставить это работать.
В соответствии с HTML
<a class="js--scroll" href="#">I’m hungry </a>
здесь находится кнопка, которая будет нажата, чтобы перейти в раздел веб-сайта, который мы хотим
<section class="js--where-i-should-scroll-to">
это область, в которой я хочу прокрутить
Jquery, который я пытаюсь использовать:
$(document).ready(function () {
// for sticky nav
$(".class1").waypoint(
function (direction) {
if (direction == "down") {
$("nav").addClass("sticky");
} else {
$("nav").removeClass("sticky");
}
},
{
offset: "100px;",
}
);
ЧАСТЬ 2 jQuery
var $root = $("html, body");
$('a[href^=\"#"]').click(function () {
var href = $.attr(this, "href");
$root.animate(
{
scrollTop: $(href).offset().top,
},
500,
function () {
window.location.hash = href;
}
);
});
ПРИМЕЧАНИЕ: Я пытаюсь сгладить прокрутку с помощью класса в последней части HTML
ПРИМЕЧАНИЕ: Я использую jquery v3.6.0
Ответ №1:
вы можете выполнить эту задачу только с помощью CSS, просто добавьте CSS-код
html {
scroll-behavior: smooth;
}
Создайте гиперссылку и раздел:
<a href="#whereToScroll">GO TO</a>
<!-- The Page scrolled to here -->
<a name="whereToScroll"></a>
<section>
...
</section>
Комментарии:
1. Итак, вы говорите, что при использовании класса невозможно добавить плавный скрининг с помощью JQUERY. насколько я понимаю, код aboce поддерживается не для всех браузеров, поэтому для кросс-браузеров потребуется jquery?
Ответ №2:
В вашем HTML-коде: —
вы должны определить идентификатор для своего раздела
<section id="js--where-i-should-scroll-to">
Затем перейдите к нему по гиперссылке, также укажите свой <a>
тег rel="relativeanchor"
для выбора запроса
<a class="js--scroll" href="#js--where-i-should-scroll-to" rel="relativeanchor">I’m hungry </a>
В вашем jQuery ЧАСТЬ 2
Попробуйте изменить его на следующее:-
$('a[rel="relativeanchor"]').click(function(){
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
return false;
});
Вот полностью работающая скрипка того, чего вы хотите достичь
Комментарии:
1. codepen.io/Sleven_/pen/JjWLReW не могли бы вы, пожалуйста, посмотреть на мой код, я не смог решить эту проблему
2. Я посмотрел в вашей ссылке на код, у вас есть 2 проблемы:- Во-первых, вы не использовали
id
в своемhref
attr. Во-вторых, вы импортировалиwaypoint
неправильно. У меня есть копия вашего кода, работающего с липкой навигационной панелью здесь => > Код скрипки3. Я заставил его работать с помощью скрипки, но в VS code live-сервере работает только верхняя половина кода, плавная прокрутка по какой-то причине не работает. идеи ану о том, почему
4. Кстати, спасибо вам за всю вашу помощь
Ответ №3:
Наконец-то я заставил его работать. Мне пришлось удалить переполнение, скрытое как в теле, так и в HTML
HTML, body{
overflow: hidden
}
Это не сработает. Это остановит jquery от запуска анимации для плавной прокрутки. Вместо этого вам придется добавить переполнение: скрыто либо в тело, либо в HTML, но не в оба. Я рекомендую попробовать и то, и другое, потому что это повлияет на ваш сайт по-разному.
исправленный код
html{
overflow:hidden
}
или
body{
overflow:hidden
}