javascript - jQuery UI 滑块缺少 BG
问题描述
我正在使用带有 jQuery UI 的范围滑块,但是当我移动滑块时,背景线不显示,所以很难分辨它在哪里。如何仅突出显示选定部分的背景线?
jsfiddle 在下面。
https://jsfiddle.net/zbmt5qrn/
/* INTEREST RATE SLIDER */
$("#interestRange").slider({
min: 0,
max: 100,
step: 1,
values: [10],
slide: function(event, ui) {
for (var i = 0; i < ui.values.length; ++i) {
$("input.interestValue[data-index=" + i + "]").val(ui.values[i]);
}
}
});
$("input.interestValue").change(function() {
var $this = $(this);
$("#interestValue").slider("values", $this.data("index"), $this.val());
});
function handleInterestChange(input) {
if (input.value < 0) input.value = 0;
if (input.value > 24) input.value = 24;
}
var items =[ '8%','24%'];
var oneBig = 100 / (items.length - 1);
$.each(items, function(key,value){
var w = oneBig;
if(key === 0 || key === items.length-1)
w = oneBig/2;
$("#interestLabel").append("<label style='width: "+w+"%'>"+value+"</laben>");
});
解决方案
我正在删除关于 '8%/24%' 的代码,因为它似乎与这个问题无关。
有几种方法可以设置背景。您可以在其中插入一个新元素#interestRange
并根据滑块值更改其宽度。但是如果你不需要担心支持过时的浏览器,使用 apply a linear-gradient
to thebackground
会容易得多#interestRange
。
const sliderMin = 0
const sliderMax = 100
const sliderDefaultValue = 10
function setSliderBackground(value){
const sliderRange = sliderMax - sliderMin
const sliderPercent = Math.floor(100 * (value / sliderRange))
$("#interestRange").css({
background: `linear-gradient(90deg, #0000ff ${sliderPercent}%, #ffffff ${sliderPercent}%)`
})
}
function setSliderValue(value){
$("#interestRange").slider("value", value);
}
function setInputValue(value){
$("#interestValue").val(value)
}
$(document).ready(()=>{
$("#interestRange").slider({
min: sliderMin,
max: sliderMax,
step: 1,
// Handle when the user moves the slider
slide: (event, ui)=>{
const sliderValue = ui.value
setInputValue(sliderValue)
setSliderBackground(sliderValue)
}
})
// Handle when the user types in a value
$("#interestValue").change(()=>{
const typedValue = $("#interestValue").val()
setSliderValue(typedValue)
setSliderBackground(typedValue)
})
// Stuff to do when the page loads
setSliderValue(sliderDefaultValue)
setInputValue(sliderDefaultValue)
setSliderBackground(sliderDefaultValue)
})
<link href="https://code.jquery.com/ui/1.12.0-rc.2/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<p>Interest Rate:</p>
<div>
<div id="interestRange"></div>
<div id="interestLabel"></div>
</div>
<div>
<input type="number" id="interestValue" />
</div>
推荐阅读
- html - How to not loose
and
- node.js - Heroku上NodeJs应用程序中的H12请求超时错误?
- html - 如何在 nz-zorro 中更改日期选择器的宽度
- c# - LINQ (C#) 以 HH:mm 格式对字符串求和
- java - Rabbitmq 宕机时的回退机制
- excel - 如何使用excel中的一系列单元格搜索网站以提取特定数据
- asp.net-core - 是否仍然可以将 .NET Framework (4.8) 用于 ASP.NET Core 3 和 Visual Studio 2019?
- python - 使用 Boto3 创建存储桶时如何添加自定义标头?
- python - 在 slim python 3.6 docker 映像上运行 python mysql 客户端
- php - mysql查询以检查codeigniter中的数组中是否存在字段