В недавнем проекте возникла традиционная проблема с точкой привязки. Так в чем проблема точки привязки?
Якорь — это своего рода гиперссылка в производстве веб-страницы, также называемаяназванный якорь. названные якоря, как стрижлокаторТо же самое гиперссылка на странице, которая довольно распространена. И может быстро найти контент сайта через меню.
На рисунке выше показана схема точки привязки Как мы можем выполнить это требование? Ниже я приведу несколько методов привязки, которые можно использовать в разных сценариях.
1.first blood
В традиционном процессе разработки все наши точки привязки реализованы в виде тега, переходящего к соответствующему идентификатору.
<a href="#content1">Menu1</a>
<a href="#content2">Menu2</a>
<div id="content1">Content1</div>
<div id="content2">Content2</div>
Это якорное решение, предоставленное нам тегом a.
2.double kill
Собственный js для получения и изменения scrollTop
В этом случае мы обычно используем настройки привязки для фиксированных элементов страницы или устанавливаем кнопку «Вверх».
// 通过element.scrollTop来获取当前元素滚动条高度
// 可以在控制台输出下
document.documentElement.scrollTop ====> number
// 返回一个number类型的内容,是滚动条的高度
// 也可以通过给scrollTop赋值去设置滚动条高度
// 在控制台输出
document.documentElement.scrollTop = 0
// 会发现已经滚动的滚动条,滚动到页面最顶端。
В мире js совместимость с браузером всегда такая головная боль
Safari использует window.pageyoffset Т.е. документ .body.scrolltop и document.docenteLement.scrolltop;
Таким образом, принимая во внимание проблемы с совместимостью браузера, наконец-то получился идеально совместимый код.
// 获取滚动条高度兼容性写法
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
3.triple kill
Элемент.scrollIntoView() Объяснение этого метода на MDN является функцией эксперимента, но основные браузеры доступны и на удивление просты в использовании. Нечего сказать, сразу к коду.
// 将某个元素跳转到浏览器视口的最上方
element.scrollIntoView()
грамматика:
// 等同于element.scrollIntoView(true)
element.scrollIntoView();
// Boolean型参数
// true 元素的顶端将和其所在滚动区的可视区域的顶端对齐 ; false 元素的底端将和其所在滚动区的可视区域的底端对齐
element.scrollIntoView(alignToTop);
// 一个带有选项的object:
// {
// behavior: "auto"(默认) | "instant" | "smooth"(缓动),
// block: "start" | "end",
// }
element.scrollIntoView(scrollIntoViewOptions); // Object型参数
4.quadra kill
В настоящее время реализована базовая функция привязки, и нажатие меню позволяет перейти к соответствующему содержимому.
Но все равно выглядит немного жестковатым.咻~ закончился, поэтому добавьте смягчение, чтобы улучшить взаимодействие с пользователем.
Добавьте предложение к стилю div, который нужно прокручивать.
scroll-behavior: smooth; // 滚动条缓慢滚动
5.penta kill
На данный момент полная медленная прокрутка точки привязки завершена, попробуйте! ! !