jquery scrollTo 无法在 IE 中使用负值
jquery scrollTo not working in IE with negative vlaues
我正在为公司内部网构建一个小型演示网站。
它基本上是一些水平放置的屏幕或面板,带有导航按钮以在屏幕中移动用户...
问题是网站是希伯来语,需要向左滚动。
我一直在使用 scrollTo 脚本在屏幕之间平滑滚动,并在 firefox 和 chrome 中测试它工作正常。
但是 Internet Explorer 根本不起作用...当调用 scrollTo 移动到负位置的对象时,它会跳转到 0 位置。
这里有一个 fiddle 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 中似乎没有任何反应,但如果您手动滚动然后单击一个方块,它会跳转到第一个广场。
有人有什么建议吗?
我在 mac,所以这里没有 IE。但是,我注意到您将 x 对象本身作为参数传递给 scrollTo
函数:
vartarget = "#"+$(this).data("target");
$('body').scrollTo($(vartarget), 1000);
而且很高兴知道 chrome、safari、firefox 等正在接受它,但该参数应该是一个数字而不是一个对象,所以我会试试这个:
$('body').scrollTo($(vartarget).css('left'), 1000);
这样你就可以发送号码了。你甚至应该去掉 px
以防万一。
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);
});
此致
我正在为公司内部网构建一个小型演示网站。 它基本上是一些水平放置的屏幕或面板,带有导航按钮以在屏幕中移动用户...
问题是网站是希伯来语,需要向左滚动。
我一直在使用 scrollTo 脚本在屏幕之间平滑滚动,并在 firefox 和 chrome 中测试它工作正常。
但是 Internet Explorer 根本不起作用...当调用 scrollTo 移动到负位置的对象时,它会跳转到 0 位置。
这里有一个 fiddle 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 中似乎没有任何反应,但如果您手动滚动然后单击一个方块,它会跳转到第一个广场。
有人有什么建议吗?
我在 mac,所以这里没有 IE。但是,我注意到您将 x 对象本身作为参数传递给 scrollTo
函数:
vartarget = "#"+$(this).data("target");
$('body').scrollTo($(vartarget), 1000);
而且很高兴知道 chrome、safari、firefox 等正在接受它,但该参数应该是一个数字而不是一个对象,所以我会试试这个:
$('body').scrollTo($(vartarget).css('left'), 1000);
这样你就可以发送号码了。你甚至应该去掉 px
以防万一。
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);
});
此致