我正在为公司内部网建立一个小型演示网站。 它基本上是一些水平布局的屏幕或面板,带有导航按钮,可以将用户移动到屏幕上......
问题是网站是希伯来语,需要向左滚动。
我一直在使用scrollTo脚本在屏幕之间平滑滚动,并在firefox和chrome中进行测试,并且工作正常。
然而,Internet Explorer根本不起作用...当调用scrollTo移动到负位置的对象时,它会跳转到0位置。
继承人http://jsfiddle.net/dogstar10/s8cbdy8x/1/
$('.panel').click(function() {
vartarget = "#"+$(this).data("target")
$('body').scrollTo($(vartarget), 1000);
});
body{direction:rtl;}
.panel{position:absolute; z-index:3; width:250px; height:250px; background:green; top:50px; }
#panel1{left:0; }
#panel2{ left:-400px;}
#panel3{ left:-800px;}
#panel4{ left:-1200px;}
<div class="panel" data-target="panel2" id="panel1"></div>
<div class="panel" data-target="panel3" id="panel2"></div>
<div class="panel" data-target="panel4" id="panel3"></div>
<div class="panel" data-target="panel1" id="panel4"></div>
单击FF或chrome中的方块,屏幕平滑地滚动到下一个方块...在IE中似乎没有任何反应,但如果您手动滚动然后单击一个方块,它将跳转到第一个方块。
有人有任何建议吗?
答案 0 :(得分:1)
jquery.scrollTo有一个名为limit
的设置,默认为true
并强制执行边界。
尝试添加可能解决它的limit:false
。如果结束位置导致负数,则可能使插件无法将其变为0。
Here是文档。
更新:尝试在jsfiddle,没有解决它:(
我不确定你是否可以解决这个问题,我修改了演示版以使用window.scrollTo()
这是一种原生方法,超级低级但仍然无法正常工作。
$('.panel').click(function() {
var target = "#"+$(this).data("target");
var pos = $(target).offset().left;
window.scrollTo(pos, 0);
});
此致
答案 1 :(得分:0)
我在Mac上,所以这里没有IE。但是,我注意到您正在将x对象本身作为scrollTo
函数的参数:
vartarget = "#"+$(this).data("target");
$('body').scrollTo($(vartarget), 1000);
很高兴知道chrome,safari,firefox等都接受了,但该参数应该是一个数字而不是一个对象,所以我会尝试这样做:
$('body').scrollTo($(vartarget).css('left'), 1000);
那样你就发了一个号码。你甚至应该剥掉px
以防万一。