Ответ 1
Вы должны взглянуть на http://plugins.jquery.com/scrollTo/, он должен быть прост в объединении с бутстрапом. Я с удовольствием дам более подробное объяснение о том, как его реализовать, если вы хотите.
В настоящее время я использую этот плагин: http://github.com/davist11/jQuery-One-Page-Nav
но предпочтет переключиться на использование Twitter Bootstrap.js Scrollspy: http://twitter.github.com/bootstrap/javascript.html#scrollspy
Тем не менее, это не дает возможности анимировать движение прокрутки при нажатии. Как я могу добавить это?
Вы должны взглянуть на http://plugins.jquery.com/scrollTo/, он должен быть прост в объединении с бутстрапом. Я с удовольствием дам более подробное объяснение о том, как его реализовать, если вы хотите.
С бутстрапом или без него:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/1.4.3/jquery.scrollTo.min.js"></script>
<script>
$(function() {
$('#yournav').bind('click', 'ul li a', function(event) {
$.scrollTo(event.target.hash, 250);
});
});
</script>
Хорошо, ребята, не нужно добавлять никаких лишних плагинов js.
Добавьте это к телу
<body data-spy="scroll" data-offset="500" data-target="#navbar">
Добавьте custom.js в свою тему или просто используйте другой файл.
Добавьте это в custom.js
// strict just to keep concept of bootstrap
+function ($) {
'use strict';
// spy and scroll menu boogey
$("#navbar ul li a[href^='#']").on('click', function(e) {
// prevent default anchor click behavior
e.preventDefault()
// store hash
var hash = this.hash
// animate
$('html, body').animate({
scrollTop: $(this.hash).offset().top -500
}, 1000, function(){
window.location.hash = hash -500
})
})
}(jQuery);
Убедитесь, что вы используете <tag id="#myLink"></tag>
и <a href="#myLink>
data-offset="500"
в теле и -500
места в функции - это смещение места прокрутки
Это один лайнер с jQuery.localScroll:
$.localScroll();
Это в основном расширение ответов выше, но я реализовал их несколько иначе для более интегрированного подхода. Я не ожидаю никаких моментов для оригинальности, но, возможно, это может помочь кому-то.
Как указано в ответе выше, добавьте scrollTo() script:
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/1.4.3/jquery.scrollTo.min.js"></script>
В файле bootstrap.js найдите:
// SCROLLSPY CLASS DEFINITION
// ==========================
В объявлениях переменных прямо под this.process()
добавьте переменную: this.scroll()
Затем прямо под функцией ScrollSpy.prototype.activate
и выше:
// SCROLLSPY PLUGIN DEFINITION
// ===========================
добавьте свой метод scroll():
ScrollSpy.prototype.scroll = function (target) {
$('#spyOnThis').bind('click', 'ul li a', function(event) {
$.scrollTo(event.target.hash, 250);
});
};
Это сработало для меня. Еще раз спасибо за полезные советы выше.