Javascript 如何创建曲线滑块?

Javascript 如何创建曲线滑块?,javascript,jquery-mobile,round-slider,Javascript,Jquery Mobile,Round Slider,我试图用jquery创建一个曲线滑块,如下所示: 没有成功 有人能指出正确的方向吗 谢谢你 Avi请检查此项,您将获得滑块的足够详细信息 'slide': function(e, ui){ var percentLeft; var submitValue; var Y = ui.value - 100; //Find center of Circle (We're using a max value and height of 200) var R = 100; //Circle's radi

我试图用jquery创建一个曲线滑块,如下所示:

没有成功

有人能指出正确的方向吗

谢谢你 Avi

请检查此项,您将获得滑块的足够详细信息

'slide': function(e, ui){
var percentLeft;
var submitValue;
var Y = ui.value - 100; //Find center of Circle (We're using a max value and height of 200)
var R = 100; //Circle's radius
var skip = false;

$(this).children('.ui-slider-handle').attr('href',' UI.val = ' + ui.value);

//Show default/disabled/out of bounds state
if ( ui.value > 0 && ui.value < 201 ) { //if in the valid slide rang
$(this).children('.ui-slider-handle').addClass('is-active');
}
else {
$(this).children('.ui-slider-handle').removeClass('is-active');
}

//Calculate slider's path on circle, put it there, by setting background-position
if ( ui.value >= 0 && ui.value <= 200 ) { //if in valid range, these are one inside the min and max
var X = Math.sqrt((R*R) - (Y*Y)); //X^2 + Y^2 = R^2. Find X.
if ( X == 'NaN' ) {
percentLeft = 0;
}
else {
percentLeft = X;    
}
}
else if ( ui.value == -1 || ui.value == 201 ) {
percentLeft = 0;
skip = true;
}
else {
percentLeft = 0;
}

//Move handle
if ( percentLeft > 100 ) { percentLeft = 100; }
$(this).children('.ui-slider-handle').css('background-position',percentLeft +'% 100%'); //set new css sprite, active state

//Figure out and set input value
if ( skip == true ) {
submitValue = 'fail';
$(this).children('.ui-slider-handle').css('background-position',percentLeft +'% 0%'); //reset css sprite
}
else {
submitValue = Math.round(ui.value / 2); //Clamp input value to range 0 - 100
}   
$('#display-only input').val(submitValue); //display selected value, demo only
$('#slider-display').text(submitValue); //display selected value, demo only
$(this).prev('.slider-input').val(ui.value); //Set actual input field val. jQuery UI hid it for us, but it will be submitted.
}
“幻灯片”:函数(e、ui){
左心室;
var次值;
var Y=ui.value-100;//查找圆心(我们使用的最大值和高度为200)
var R=100;//圆的半径
var skip=false;
$(this).children('.ui滑块句柄').attr('href','ui.val='+ui.value);
//显示默认/禁用/越界状态
如果(ui.value>0&&ui.value<201){//如果在有效的幻灯片范围内
$(this).children('.ui滑块句柄').addClass('is-active');
}
否则{
$(this).children('.ui滑块句柄').removeClass('is-active');
}
//通过设置背景位置,计算滑块在圆上的路径,将其放在那个里
如果(ui.value>=0&&ui.value 100){percentLeft=100;}
$(this).children('.ui滑块句柄').css('background-position',percentLeft+'%100%');//设置新css精灵,活动状态
//计算并设置输入值
如果(跳过==真){
submitValue=‘fail’;
$(this).children('.ui滑块句柄').css('background-position',percentLeft+'%0%');//重置css精灵
}
否则{
submitValue=Math.round(ui.value/2);//将输入值钳制在0-100范围内
}   
$(“#仅显示输入”).val(submitValue);//仅显示所选值,仅演示
$(“#滑块显示”).text(submitValue);//显示选定值,仅演示
$(this.prev('.slider input').val(ui.value);//设置实际输入字段val.jQuery ui为我们隐藏了它,但它将被提交。
}
你也可以试试这个

如果您需要任何其他帮助,请添加评论


关于D.

您可以将此插件用于弯曲/360度滑块的替代方法

以下是编码:



Javascript

 (function($){
 'use strict';

 var set_html = function(value, index, angle, unit){

 var html = ''
,val = value;

 if(unit !== ''){
 val += unit;
 }

 html += '<b>Value: </b>' + val + '<br/>';
 html += '<b>Index: </b>' + index + '<br/>';
 html += '<b>Angle: </b>' + angle + '<br/>';

 return html;
 };

 $('document').ready(function(){

 var self = {
 degrees: null
 };


 self.degrees = $('#degrees').round_slider({
 min: 0,
 max: 359,
 unit_sign: '\u00b0',

 bg: 'img/bg/degrees-theme.png',
 handle_bg: 'img/handles/wheel-33-33.png',
 input_bg: 'img/input/round-50.png',
 points_bg: 'img/points/degress-white.png',

 angle_changed_callback: function(value, index, angle, unit){
 $('#degrees-data').html(set_html(value, index, angle, unit));
 }
 });
 });

 })(jQuery);
(函数($){
"严格使用",;
var set_html=函数(值、索引、角度、单位){
var html=''
,val=值;
如果(单位!=''){
val+=单位;
}
html+='值:'+val+'
'; html+='索引:'+Index+'
'; html+='角度:'+Angle+'
'; 返回html; }; $('document').ready(函数(){ var self={ 度数:零 }; self.degrees=$('#度')。圆形#滑块({ 分:0,, 最高:359, 单位符号:'\u00b0', bg:'img/bg/degrees-theme.png', handle_bg:'img/handles/wheel-33-33.png', input_bg:'img/input/round-50.png', points_bg:'img/points/degress white.png', 角度\更改\回调:函数(值、索引、角度、单位){ $('degrees data').html(set_html(值、索引、角度、单位)); } }); }); })(jQuery);
在这里查看演示
这正是你想要的。通过使用jQuery插件,您可以制作任意类型的具有自定义外观的圆弧滑块

请检查此项以了解您的需求演示

现场演示:

$(“#圆弧滑块”).roundSlider({
滑块类型:“最小范围”,
圆形:“自定义季度”,
价值:75,
startAngle:45,
可编辑工具提示:正确,
半径:350,
宽度:6,
把手大小:“+32”,
tooltipFormat:函数(参数){
返回args.value+“%”;
}
});
#圆弧滑块{
高度:110px!重要;
宽度:500px!重要;
溢出:隐藏;
填充:15px;
}
#圆弧滑块.rs容器{
左边距:-350px;/*这里350是半径值*/
左:50%;
}
#圆弧滑块.rs工具提示{
顶部:60px;
}
#圆弧滑块.rs工具提示文本{
字体大小:25px;
}
#圆弧滑块.rs边框{
边框宽度:0px;
}
/*外观相关变化*/
.rs控制.rs范围颜色{
背景色:#54BBE0;
}
.rs控件.rs路径颜色{
背景色:#5F5F;
}
.rs控制。rs手柄{
背景色:#51c5cf;
}


好的,您需要固定的宽度还是高度?它必须是有反应的?请提供更多详情;)非常感谢你。Pathslider很完美哇,太完美了。谢谢,非常感谢
 <div class="box dotted">
 <div class="left">
 <div id="degrees" class="demo"></div>
 </div>
 <div class="right">
 <p class="name">Degrees</p>
 <p id="degrees-data"></p>
 </div>
 </div>
 (function($){
 'use strict';

 var set_html = function(value, index, angle, unit){

 var html = ''
,val = value;

 if(unit !== ''){
 val += unit;
 }

 html += '<b>Value: </b>' + val + '<br/>';
 html += '<b>Index: </b>' + index + '<br/>';
 html += '<b>Angle: </b>' + angle + '<br/>';

 return html;
 };

 $('document').ready(function(){

 var self = {
 degrees: null
 };


 self.degrees = $('#degrees').round_slider({
 min: 0,
 max: 359,
 unit_sign: '\u00b0',

 bg: 'img/bg/degrees-theme.png',
 handle_bg: 'img/handles/wheel-33-33.png',
 input_bg: 'img/input/round-50.png',
 points_bg: 'img/points/degress-white.png',

 angle_changed_callback: function(value, index, angle, unit){
 $('#degrees-data').html(set_html(value, index, angle, unit));
 }
 });
 });

 })(jQuery);