JavaScript中的简单范围/值滑块

时间:2015-10-08 03:50:51

标签: javascript jquery html slider mouseevent

我试图在javascript中使用jQuerybutton,A div来创建一个简单的范围/值滑块。此滑块应该不使用{{ 1}}或任何其他bootstrapplugin

我的问题是如何移动div元素中的滑块按钮以及执行此操作需要inbuild functions

注意:这不是幻灯片显示滑块或图像滑块

3 个答案:

答案 0 :(得分:3)

看看这个简单的滑块实现。随意使用和修改您喜欢的方式:



document.addEventListener('DOMContentLoaded', function() {
  var sliders = document.querySelectorAll('.my-slider');

  [].forEach.call(sliders, function(el, i) {
    var btn = el.firstElementChild,
        span = el.nextElementSibling.querySelector('span'),
        isMoving = false;
    
    var move = function(e) {
      if (isMoving) {
        var min = 0,
            max = el.offsetWidth - btn.offsetWidth,
            mousePos = (e.pageX - el.offsetLeft - (btn.offsetWidth / 2)),
            position = (mousePos > max ? max : mousePos < min ? min : mousePos),
            value = Math.floor((position / max) * 100);        

        btn.style.marginLeft = position + 'px';
        btn.value = value;
        span.textContent = value;
      }
    };
    
    el.addEventListener('mousedown', function(e) {
      isMoving = true;
      move(e);
    });

    document.addEventListener('mouseup', function(e) {
      isMoving = false;
    });

    document.addEventListener('mousemove', function(e) {
      move(e);
    });
  });
});
&#13;
.my-slider {
  width: 250px;
  border: 1px solid #999;
  border-radius: 3px;
  background-color: #ccc;
  height: 10px;
  line-height: 10px;
}
.my-slider__button {
  border: 1px solid #333;
  border-radius: 3px;
  margin-top: -4px;
  width: 18px;
  height: 18px;
  background-color: #eee;
  display: block;
}

div {
  margin-top: 6px; 
}
&#13;
<div class="my-slider">
  <button class="my-slider__button"></button>
</div>
<div>
  <strong>Current value: </strong><span></span>
</div>
<div class="my-slider">
  <button class="my-slider__button"></button>
</div>
<div>
  <strong>Current value: </strong><span></span>
</div>
<div class="my-slider">
  <button class="my-slider__button"></button>
</div>
<div>
  <strong>Current value: </strong><span></span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您使用拖放事件,其属性设置仅限于其所在的div。查看此链接Drag Drop Reference Guide,您将看到所需的一切。使用draggable和dropable时,可以将移动限制为水平,还可以设置绑定到的元素。这将允许您只从左向右移动,并限制垂直移动,并保持在div的边界。引导程序使用相同的功能来完成它。

这是一个基本的例子,展示了一些提到的东西:

     $('. draggable').draggable({
    axis: 'y',
    handle: '.top'
    drag: function( event, ui ) {
       var distance = ui.originalPosition.top - ui.position.top;

       // if dragged towards top
       if (distance > 0) { 
           //then set it to its initial state
           $('.draggable').css({top: ui.originalPosition.top + 'px'});
       }
   }
});

答案 2 :(得分:2)

试试这个:

  $('img').mouseenter(function(){ //or you can use hover()
   // Set the effect type
    var effect = 'slide';

     // Set the options for the effect type chosen
    var options = { direction: "right" };

   // Set the duration (default: 400 milliseconds)
    var duration = 1000;

    $(this).toggle(effect, options, duration);
   });