我有一个容器div
,里面有ul
,就像这个jsFiddle:http://jsfiddle.net/BQPVL/1/
为什么滚动不起作用?
HTML:
<div id="outside">
<ul id="inside">
<li>hi</li>
<li>how are you?</li>
<li>i am good.</li>
</ul>
</div>
<button id="left">←</button>
<button id="right">→</button>
CSS:
#outside {
width: 200px;
height: 50px;
overflow: scroll;
}
#inside {
width: 1000px;
}
#inside li {
background: red;
width: 99px;
height: 40px;
border-right: 1px solid black;
float: left;
padding: 5px;
}
jQuery的:
var position = $("#inside").scrollLeft();
$(document).ready(function() {
$("#right").bind("click", function() {
$("#inside").animate({
scrollLeft: position + 100
}, 1000);
});
});
答案 0 :(得分:10)
您需要scrollLeft
具有overflow
属性的元素,那就是您的#outside
的 jsBin demo 强> 的
$(function() { // DOM READY shorthand
$("#right, #left").click(function() {
var dir = this.id=="right" ? '+=' : '-=' ;
$("#outside").stop().animate({scrollLeft: dir+'100'}, 1000);
});
});
如您所见,您可以将两个按钮附加到点击处理程序,并在其内部检索单击的按钮id
。
如果this.id
返回"right"
var dir
将成为"+="
,否则合乎逻辑
您点击了#left
,dir
将会"-="
答案 1 :(得分:1)
您需要提供offset()
或position()
。并为left
属性设置动画。
$(document).ready(function() {
$("#right").bind("click", function() {
var position = $("#inside").position();
$("#inside").animate({
left: position.left - 100
}, 1000);
});
});
$("#left").bind("click", function() {
var position = $("#inside").position();
$("#inside").animate({
left: position.left + 100
}, 1000);
});
float: left;
时,你需要清除你的花车。请等到小提琴准备就绪...... position: relative;
提供给UL
。答案 2 :(得分:0)
尝试使用此:http://jsfiddle.net/BQPVL/10/
$("#right").on("click", function () {
$("#inside").stop(true, true).animate({
left: '-=100'
}, 1000);
});
$("#left").on("click", function () {
$("#inside").stop(true, true).animate({
left:'+=100'
}, 1000);
});