Читая документы AngularJS, я не понял, $anchorScroll
можно ли использовать параметр продолжительности / замедления для плавной прокрутки элементов.
Там только сказано:
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
Я не использую jquery и не хочу; есть ли еще умный, но простой способ сделать или расширить $anchorScroll
, чтобы сделать прокрутку более плавной?
<a anchor-smooth-scroll>About 1</a> <a anchor-smooth-scroll>About 2</a>
<div id="my-div">my div</div>
) , а затем создать ссылку , как это:<a anchor-smooth-scroll="my-div">visit my div</a>
.Вы также можете использовать angular-scroll, ссылку « https://github.com/durated/angular-scroll/ ». Это плавная прокрутка, а также несколько функций плавности, чтобы получить профессиональный вид.
источник
Ответ Бретта мне очень понравился. Я внес небольшие изменения в его решение с точки зрения модульности и тестируемости.
Вот еще один рабочий пример JsFiddle, который включает другую версию с включенным тестированием.
Для тестирования я использую Карму и Жасмин. Подпись была немного изменена следующим образом:
Где element является обязательным атрибутом для прокрутки, а скорость необязательна, где по умолчанию 20 (как было раньше).
источник
Вы также можете использовать ngSmoothScroll, ссылка: https://github.com/d-oliveros/ngSmoothScroll .
Просто включите
smoothScroll
модуль как зависимость и используйте его следующим образом:<a href="#" scroll-to="my-element-3">Click me!</a>
источник
Ни одно из решений здесь на самом деле не выполняет то, что изначально просил OP, то есть не делает
$anchorScroll
прокрутку плавной. Разница между директивами плавной прокрутки и тем$anchroScroll
, что она использует / изменяет$location.hash()
, что может быть желательно в некоторых случаях.Вот суть простого модуля, который заменяет прокрутку $ anchorScroll плавной прокруткой. Он использует библиотеку https://github.com/oblador/angular-scroll для самой прокрутки (замените ее чем-нибудь другим, если хотите, это должно быть легко).
https://gist.github.com/mdvorak/fc8b531d3e082f3fdaa9
Примечание. На самом деле $ anchorScroll не обеспечивает плавную прокрутку, а заменяет свой обработчик прокрутки.
Включите его, просто указав
mdvorakSmoothScroll
модуль в вашем приложении.источник
Алан, спасибо. Если кому интересно, форматировал по стандартам Джона Паппы.
источник
Я не знаю, как оживить
$anchorScroll
. Вот как я это делаю в своих проектах:И функция JS:
источник