Javascript jQuery UI:使用一个捕捉平滑滑块(默认值)?

Javascript jQuery UI:使用一个捕捉平滑滑块(默认值)?,javascript,jquery,user-interface,slider,Javascript,Jquery,User Interface,Slider,我想做一个滑块,捕捉到中心,同时在其他地方保持平滑的动作。类似于现实生活中扬声器平衡滑块的jQuery版本。可能吗 或者我应该用一个可拖动的对象创建自己的滑块,将其压缩到一个轴上,并包含一个帧,然后捕捉到位于帧中心的另一个对象(或网格) 编辑:我只需要一个滑块,允许值从-10到-1,0,和1到10(介于-1和1之间捕捉到0),步长:0.1Hmmm…这就是我在脑海中想象的…一个像旋转木马一样在计时器上滑动的背景(可能这些是大图像),顶部有一行缩略图,可以平滑滑动。这就是你想要建造的 编辑:以下是您

我想做一个滑块,捕捉到中心,同时在其他地方保持平滑的动作。类似于现实生活中扬声器平衡滑块的jQuery版本。可能吗

或者我应该用一个可拖动的对象创建自己的滑块,将其压缩到一个轴上,并包含一个帧,然后捕捉到位于帧中心的另一个对象(或网格)


编辑:我只需要一个滑块,允许值从-10到-1,0,和1到10(介于-1和1之间捕捉到0),步长:0.1

Hmmm…这就是我在脑海中想象的…一个像旋转木马一样在计时器上滑动的背景(可能这些是大图像),顶部有一行缩略图,可以平滑滑动。这就是你想要建造的

编辑:以下是您需要执行的操作:

我很少发现需要使用jQuery插件。以下是您需要的:

  • 鼠标向下(在滑块上)。api.jquery.com/mousedown/。在释放时,鼠标上有一个回调

  • 拖动滑块时,在滑块容器内跟踪鼠标位置docs.jquery.com/Tutorials:mouse\u position

  • 当鼠标尚未释放时,使用“动画”功能移动滑块。api.jquery.com/animate/Stop animate on release

  • 当滑块到达其容器中的某个x位置时,强制执行“平滑”功能-即不同的动画功能


  • 您应该能够使用jQuery滑块,但使用以下命令限制其运动:

    jSlider.slider({
    //其他选择。。。
    幻灯片:功能(事件、用户界面){
    如果(ui.value>-1&&ui.value<1&&ui.value!=0){
    //将其强制为-1和1之间的0。
    jSlider.slider('value',0);
    返回false;
    }
    返回true;
    }
    });
    
    使用以下命令,以便jquery滑块自动捕捉到步骤中最近的位置。诀窍是实现自己的步长间隔滑块。问题是,如果最大值和最小值之间的距离很小(例如5-10),则幻灯片将按步长运行,因为默认步长=1,因此您需要基于此计算步长。如果最大-最小值之间的距离很大(例如1-1000或更大),则可以保留计算步骤计算,并将其初始化为1

           max_limit = 30;
           min_limit = 5;
           stick_to_steps_of = 5;
           var computed_step = max_term/100; //you can vary the denominator to make it smoother
            $("#my_slider" ).slider({
                animate : true,
                value: max_limit,
                min: min_limit,
                max: max_limit,
                step: computed_step,
                stop: function( event, ui ) {
                    d = parseInt(parseInt(ui.value)/stick_to_steps_of);
                    rem = parseInt(ui.value)%stick_to_steps_of;
                    var fval = 0;
                    if (rem <= parseInt(stick_to_steps_of/2)) {
                        fval = d*stick_to_steps_of;
                    }else{
                        fval = (d+1)*stick_to_steps_of; 
                    }
                    $("#my_slider").slider('option', 'value', fval); 
                    $('#myslider_current_value').html(fval);  //some placeholder to show the current value
                }
            });
    
    max_limit=30;
    最小极限=5;
    坚持步骤,共5步;
    计算的var\u步长=最大\u项/100//您可以改变分母使其更平滑
    $(“#我的#滑块”).滑块({
    动画:对,
    值:最大极限,
    min:min_限制,
    max:max_极限,
    步骤:计算步骤,
    停止:功能(事件、用户界面){
    d=parseInt(parseInt(ui.value)/stick\u to\u steps\u of);
    rem=parseInt(ui.value)%stick\u to\u steps\u of;
    var-fval=0;
    
    如果(rem听起来很有趣,但它比这简单得多。)我只需要一个滑块,允许值从-10到-1,0,和1到10(介于-1和1之间捕捉到0)。我会把它添加到问题中。:)啊,明白了。“扬声器平衡滑块”在第一次阅读时就在我头上。什么是“其他地方的平滑动作”?问题是什么(从我收集的信息来看)使用jQuery UI滑块进行“捕捉”意味着“步进”--如果你想让它捕捉到一个地方,你可以让它以相等的增量到处捕捉。我想让值分辨率在除零区域以外的任何地方都很高。效果非常好。非常感谢!
           max_limit = 30;
           min_limit = 5;
           stick_to_steps_of = 5;
           var computed_step = max_term/100; //you can vary the denominator to make it smoother
            $("#my_slider" ).slider({
                animate : true,
                value: max_limit,
                min: min_limit,
                max: max_limit,
                step: computed_step,
                stop: function( event, ui ) {
                    d = parseInt(parseInt(ui.value)/stick_to_steps_of);
                    rem = parseInt(ui.value)%stick_to_steps_of;
                    var fval = 0;
                    if (rem <= parseInt(stick_to_steps_of/2)) {
                        fval = d*stick_to_steps_of;
                    }else{
                        fval = (d+1)*stick_to_steps_of; 
                    }
                    $("#my_slider").slider('option', 'value', fval); 
                    $('#myslider_current_value').html(fval);  //some placeholder to show the current value
                }
            });