单击按钮时从一个Div滚动到另一个Div
Scroll from Div to Div when clicking a button
我有4个部分,和一个nextButton,用于滚动。我希望每次点击该按钮时,页面都会滚动,最靠近顶部的部分也会滚动到顶部,这样每次点击时,我都能以合理的方式获得从第一部分到最后一部分的滚动序列。
首先,我用"下一个"概念制作了它,从第1节到第n节,但它很糟糕。事实上,如果你用鼠标或手指滚动到底部,然后第一次点击nextButton按钮,页面就会回到第一部分。
不!我不想那样。
所以我尝试了这种新的逻辑方法,它需要不止一个If—Else If循环。但是它不工作:
var $output = $('.output');
$(window).on('scroll', function () {
var scrollTop = $(window).scrollTop(),
sec1Offset = $('#sec1').offset().top,
sec2Offset = $('#sec2').offset().top,
sec3Offset = $('#sec3').offset().top,
sec4Offset = $('#sec4').offset().top,
d1 = (sec1Offset - scrollTop),
d2 = (sec2Offset - scrollTop),
d3 = (sec3Offset - scrollTop),
d4 = (sec4Offset - scrollTop);
$output.html(d1 + " " + d2 + " " + d3 + " " + d4);
});
var scrollTop = $(window).scrollTop(),
sec1Offset = $('#sec1').offset().top,
sec2Offset = $('#sec2').offset().top,
sec3Offset = $('#sec3').offset().top,
sec4Offset = $('#sec4').offset().top,
d1 = (sec1Offset - scrollTop),
d2 = (sec2Offset - scrollTop),
d3 = (sec3Offset - scrollTop),
d4 = (sec4Offset - scrollTop),
aa = (('d1' > 0)),
bb = (('d1' <= 0) && ('d2' > 0)),
cc = (('d1' < 0) && ('d2' <= 0) && ('d3' > 0)),
dd = (('d1' < 0) && ('d2' < 0) && ('d3' <= 0) && ('d4' > 0));
$('#next-btn').click(function () {
if ('aa') {
$('html, body').animate({
scrollTop: $('#sec1').offset().top
}, 1300);
return false;
} else if ('bb') {
$('html, body').animate({
scrollTop: $('#sec2').offset().top
}, 1300);
return false;
} else if ('cc') {
$('html, body').animate({
scrollTop: $('#sec3').offset().top
}, 1300);
return false;
} else if ('dd') {
$('html, body').animate({
scrollTop: $('#sec4').offset().top
}, 1300);
return false;
}
});
我把链接留给JsFiddle!
TNX !
你所面临的"第一次点击"的问题是因为你已经包装你的变量作为一个字符串。
aa = (('d1' > 0)),
bb = (('d1' <= 0) && ('d2' > 0)),
cc = (('d1' < 0) && ('d2' <= 0) && ('d3' > 0)),
dd = (('d1' < 0) && ('d2' < 0) && ('d3' <= 0) && ('d4' > 0));
和
if ('aa') {
$('html, body').animate({
scrollTop: $('#sec1').offset().top
}, 1300);
return false;
}
...
在这两种情况下,都是对字符串进行条件检查。如果你去掉引号,就可以了。
第一次成功的原因是'aa'
每次都求真。
希望这对你有帮助!
http://jsfiddle.net/PxnAw/20/相关文章:
- 通过DRAGGABLE将一个DIV移动到另一个DIF下?(CSS,JQuery)
- 下载Div&画布为一个图像
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 限制一个DIV出现在另一个特定大小的DIV中
- 使用jQuery将DIV放在另一个DIV上
- 点击一个按钮,有没有一种方法可以检查Div内部的图像
- 使用YUI或ExtJS将隐藏的DIV变成一个窗口
- 只翻转一个DIV,而不是所有DIV都属于同一类
- 更改另一个 DIV 之前的 DIV 宽度
- JQuery 将一个 Div 值的百分比添加到另一个值
- jQuery - 在另一个 DIV 中定位特定的 DIV
- 选中复选框时仅重新加载一个DIV
- 动态创建一个DIV容器
- jQuery-检查外部页面上是否存在DIV,如果存在,则加载DIV,否则加载另一个
- 在悬停时显示一个DIV,在悬停的另一个DIV.使用CSS
- 将DIV内容复制到另一个DIV
- 当调用DIV时,将一个DIV加载到另一个的顶部
- 通过点击隐藏DIV,并通过JavaScript显示另一个DIV
- 动态添加图像在DIV一个接一个
- 给DIV一个最大化按钮