我正在使用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>
答案 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>