Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当点击并按住按钮时,如何继续滚动图像?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 当点击并按住按钮时,如何继续滚动图像?

Javascript 当点击并按住按钮时,如何继续滚动图像?,javascript,jquery,css,Javascript,Jquery,Css,我有一张3000px宽的图片,放在150px宽的图片里。我还有一个左右按钮,可以在div中左右滚动图像 <div id='box'><img src='img.png'/></div><a id='btnleft'>left</a><a id='btnright'>right</a> 我应该数一数鼠标下移的时间吗?我如何才能做到这一点?这里有一些代码可以做到这一点: 它不能完全满足10px的要求,但很难区分鼠

我有一张3000px宽的图片,放在150px宽的图片里。我还有一个左右按钮,可以在div中左右滚动图像

<div id='box'><img src='img.png'/></div><a id='btnleft'>left</a><a id='btnright'>right</a>

我应该数一数鼠标下移的时间吗?我如何才能做到这一点?

这里有一些代码可以做到这一点:

它不能完全满足
10px
的要求,但很难区分鼠标是否会或何时会变成点击。因此,它是连续的,但接近预期结果

没有什么太神秘的,它会检查按钮上鼠标向下的左滚动位置,然后向任一侧设置动画。持续时间根据需要滚动到该位置以保持稳定速度的数量设置。当按钮触发
mouseup
mouseleave
时,动画停止


可以忽略live示例中的一行(这是一个Codepen故障,上面有一条注释)。

您在编码中尝试了什么?我尝试过使用类似分页的方法。但当我滚动到最后一页时,该位置不正确。@请出示您当前的代码。我有一个问题,$(“#box”)、溢出是什么意思?很高兴我能提供帮助,谢谢跟进。我在这里声明了两个变量。在两者之间加一个逗号只比
var-box=$(“#box”)短一点;var溢出。希望这能解释它。我太笨了,是否可以放入文档$(document).ready(function()?它已经包装在一个
$(function(){…});
中,这是它的缩写。应该作为外部(链接)脚本工作-或者在文档本身中,但是它当然需要
标记。
var imgWidth = 3000;
var divWidth = 130;
var scrollwidth = imgWidth/divWidth;
$('#btnleft').click(function (){ $('#bg_img').animate({left: +=scrollwidth}); });
$('#btnright').click(function (){ $('#bg_img').animate({left: -=scrollwidth}); });
$(function() {

var box = $('#box'), overflow;

$(window).on('load resize', function() {

  var range = $('img').outerWidth();
  overflow = range-box.width();
});

$('button').on('mousedown', function() {

  var spot = box.scrollLeft();

  if (this.id == 'left-button') {
    var aim = 0,
    duration = spot;
  }
  else {
    aim = overflow;
    duration = aim-spot;
  }

  box.animate({scrollLeft: aim}, duration*5);
})
.on('mouseup mouseleave', function() {

  box.stop();
});
});