如何停止悬挂滑块的手柄?

时间:2018-01-18 13:54:47

标签: jquery css jquery-ui uislider

我正在使用jQuery Slider自定义句柄。

我的手柄非常大,这意味着如果你将它一直向右拖动,那么它会悬在滑杆的末端......

使用如下方法:

margin-left:-50%;

仅适用于右侧(100%),但如果向左移动则负边距将其拉出屏幕。

如何在保持响应的同时解决这个问题?我想得到它,以便句柄/图像的末尾平行于每个柱的末端,如果这是有道理的。

var handle = $("#custom-handle");
$("#slider").slider({
  create: function() {
    handle.text($(this).slider("value"));
  },
  slide: function(event, ui) {
    handle.text(ui.value);
  }
});
#custom-handle {
  width: 20%;
  background: transparent;
  height: 57px;
  background-image: url(https://s3-eu-west-1.amazonaws.com/quizdu/redslider.png);
  top: 0%;
  border: none;
  margin-top: -1.8em;
  background-size: 100%;
  text-align: center;
  line-height: 1.6em;
}

.container {
  max-width: 500px;
  margin: 0 auto;
}

body {
  padding-top: 50px;
  background: grey;
}
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="container">
  <div id="slider">
    <div id="custom-handle" class="ui-slider-handle"></div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

如果将值转换为百分比,并将其与句柄宽度相乘,则可以将其用作偏移量

var handle = $("#custom-handle"),
    handleWidth = handle.width();
$("#slider").slider({
  create: function() {
    handle.text($(this).slider("value"));
  },
  slide: function(event, ui) {
    handle.text(ui.value);
    handle.css({
        'margin-left': 0 - ((ui.value / 100) * handleWidth)
    });
  }
});
#custom-handle {
  width: 20%;
  background: transparent;
  height: 57px;
  background-color: #0099ff;
  top: 0%;
  border: none;
  margin-top: -1.8em;
  background-size: 100%;
  text-align: center;
  line-height: 1.6em;
}

.container {
  max-width: 500px;
  margin: 0 auto;
}

body {
  padding-top: 50px;
  background: grey;
}
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="container">
  <div id="slider">
    <div id="custom-handle" class="ui-slider-handle"></div>
  </div>
</div>