Ok Давайте, первые 2 строки являются правильными из вашего исследования
$('a').click(function(){ //when you click 'a' run this function
$('html, body').animate({ // animate the actual body and html element?
Следующая строка немного сложнее. Давайте разбить его
$(this).attr("href")
(а) HREF значение атрибута, по которым щелкнули элемента (в данном случае это может быть что-то вроде # test1 или # test2
$($(this).attr("href")
, если выше, имеет значение «# test1 «селектор становится $ (» # test1'), который соответствующие два всех элементы с id=test1
$().offset().top
вы получаете метод смещения, который имеет координаты элемента документа. Один из я e переменными являются вершины, которые являются расстоянием от вершины документа.
И поэтому следующая строка будет найти общее количество пикселей, которые необходимы для прокрутки
scrollTop: $($(this).attr('href')).offset().top
}, 800); // this is the scroll speed
return false; // this will stop the anchor element from executing the default functionality, which is actually navigating to the href specified.
});
Я надеюсь, что это помогает: P
'вернуть false;' отменяет действие щелчка. Документация по анимации: http://api.jquery.com/animate/ Jquery multiple selectors https://api.jquery.com/multiple-selector/ – epascarello
Почти все хорошо ... '$ ('html, body')' (я думаю, что html не включается) ... и 'return false' мешает' a' работать как ожидалось (вы выполняете настраиваемое поведение при нажатии на элемент 'a', поэтому вы не нужно поведение по умолчанию) – Hackerman
'return false' работает так же, как' function (ev) {ev.preventDefault(); ', как сказал @epascarello, он просто делает это, когда вы нажимаете ссылку, это не будет перенаправить на 'href =" "' – Baruch