Javascript 如何创建曲线滑块?
我试图用jquery创建一个曲线滑块,如下所示: 没有成功 有人能指出正确的方向吗 谢谢你 Avi请检查此项,您将获得滑块的足够详细信息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
'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);