导航栏特定的 jQuery 滚动动画
Navbar Specific jQuery Scroll Animation
我有一个固定的标题,其中有一些链接。现在,这段代码几乎是我需要它工作的地方,主要问题是执行第二个函数时有延迟。它的预期目的是在单击绑定元素时滚动到页面顶部,但它一开始会缓慢地滚动,然后再以指定的速度继续。我相信还有一种方法可以 DRY 它并将其转换为单个函数而不是两个单独的函数。任何帮助将不胜感激。
$(function() {
$("[href^='#']").on("click", function( e ) {
$("body, html").animate({
scrollTop: $( $(this).attr('href') ).offset().top-$('.header').height()-$('.header').outerHeight()
}, 800);
e.preventDefault();
});
});
$(function(){
$("#home").on("click", function( e ){
$("body, html").animate({
scrollTop: 0
}, 800);
e.preventDefault();
});
});
JSFiddle - http://jsfiddle.net/9by4n5cu/1/
你可以像波纹管一样合并两个函数,
$(function() {
$("[href^='#']").on("click", function( e ) {
var target = $(this).attr('href');
var scrollTop = $( target ).offset().top-$('.header').height()-$('.header').outerHeight();
if ( target =='#home'){
scrollTop = 0;
}
$("body, html").animate({
scrollTop: scrollTop
}, 800);
e.preventDefault();
});
});
演示:http://jsfiddle.net/ibrahim12/9by4n5cu/3/
它延迟是因为您触发了两次animate
,所以就像您所说的那样,您需要将function
合并为这样的
$(function () {
$("[href^='#']").on("click", function (e) {
var link = $(this);
var $header = $('.header')
var top = link.attr("id") == "home" ? 0 : $(link.attr('href')).offset().top - $header.height() - $header.outerHeight()
//$("html").animate({
$("body, html").animate({ // Use $("body, html") to work on all browser as noted by Ibrahim
scrollTop: top
}, 800);
e.preventDefault();
});
});
我使用第一次点击功能,然后检查点击link
的 id 是否home
,如果是,则将top
设置为 0,否则像以前一样进行计算。
这是更新的小提琴小提琴
相关文章:
- jQuery滚动功能只工作一次
- jQuery滚动器插件修改
- 当元素可见时,jQuery滚动函数会触发一次
- jQuery滚动到聊天框底部
- 如何发现用户是否使用jQuery滚动到HTML容器的末尾
- 使用 jQuery 滚动窗格
- jQuery 滚动到锚点适用于移动设备,但不适用于桌面
- JQuery 滚动列表框模仿键盘导航
- JQuery 滚动到锚点行为奇怪
- jquery滚动功能无法正常工作
- JQuery滚动到底部
- 使用jQuery滚动获取距窗口顶部的距离
- jQuery滚动&锚初始位置
- 如何使用jQuery滚动到页面顶部
- 核心滚动标题面板+jQuery滚动
- iOS jquery滚动视图插件不会在iframe上滚动y
- 取消弹出jquery滚动事件
- jQuery滚动力不会滚动超过450px
- jQuery滚动出现问题
- Jquery滚动到基于数据属性的部分