Javascript 如何调整时钟选择器的大小?
这里是我下载clockpicker jquery插件源代码的链接 我在一个对话框中使用了时钟选择器,但我需要调整它的大小。 时钟选择器没有这样的属性,在这里我可以提到尺寸。 我需要在css中做什么更改才能更改时钟选择器的高度和宽度 我可以通过更改clockpicker popover类中的一些属性来更改长方体的宽度和高度,但更改clockpicker dial和clockpicker tick类并没有帮助 实际时钟(小时和分钟)不变。我看到这是用javascript代码准备的,一些变量声明如下,实际时钟是基于这些变量准备的Javascript 如何调整时钟选择器的大小?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,这里是我下载clockpicker jquery插件源代码的链接 我在一个对话框中使用了时钟选择器,但我需要调整它的大小。 时钟选择器没有这样的属性,在这里我可以提到尺寸。 我需要在css中做什么更改才能更改时钟选择器的高度和宽度 我可以通过更改clockpicker popover类中的一些属性来更改长方体的宽度和高度,但更改clockpicker dial和clockpicker tick类并没有帮助 实际时钟(小时和分钟)不变。我看到这是用javascript代码准备的,一些变量声明如下
// Clock size
var dialRadius = 100,
outerRadius = 80,
// innerRadius = 80 on 12 hour clock
innerRadius = 54,
tickRadius = 13,
diameter = dialRadius * 2,
duration = transitionSupported ? 350 : 1;
根据这些值进行一些三角运算。我应该如何更改这些值以调整时钟大小?如果查看源文件,您将找到时钟选择器的css,它以。css使用css缩放弹出窗口:
.popover{
-ms-transform: scale(1.5);
-webkit-transform: scale(1.5);
transform: scale(1.5);
top:120px !important;
margin-left:100px; }
并在已编辑的js库中使用新变量缩放:
// Clock size
...
var zoom = 1.5;
缩放功能的最终结果:(js库代码已更改)在上面的JSFIDLE示例中有一个错误(我在上面的注释中提到过)。以下是修复方法:
// Mousedown or touchstart
function mousedown(e, space) {
var offset = plate.offset(),
isTouch = /^touch/.test(e.type),
x0 = offset.left + dialRadius*zoom,
y0 = offset.top + dialRadius*zoom,
dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,
dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,
z = Math.sqrt(dx * dx + dy * dy)/zoom,
moved = false;
............
............
// Clock
self.setHand(dx/zoom, dy/zoom, ! space, true);
// Mousemove on document
$doc.off(mousemoveEvent).on(mousemoveEvent, function(e){
e.preventDefault();
..........
..........
moved = true;
self.setHand(x/zoom, y/zoom, false, true);
});
// Mouseup on document
$doc.off(mouseupEvent).on(mouseupEvent, function(e){
$doc.off(mouseupEvent);
e.preventDefault();
...........
...........
if ((space || moved) && x === dx && y === dy) {
self.setHand(x/zoom, y/zoom);
}
.............
.............
$doc.off(mousemoveEvent);
});
}
// Set clock hand to (x, y)
ClockPicker.prototype.setHand = function(x, y, roundBy5, dragging){
var radian = Math.atan2(x, - y),
isHours = this.currentView === 'hours',
unit = Math.PI / (isHours || roundBy5 ? 6 : 30),
z = Math.sqrt(x * x + y * y),
options = this.options,
inner = isHours && z < (outerRadius + innerRadius) / 2,
radius = inner ? innerRadius : outerRadius,
value;
......
......
}
//鼠标向下或touchstart
功能鼠标向下(e,空格){
var offset=板材。offset(),
isTouch=/^touch/.test(e.type),
x0=偏移量。左+刻度盘半径*缩放,
y0=偏移量。顶部+刻度盘半径*缩放,
dx=(i触摸?e.originalEvent.touch[0]:e).pageX-x0,
dy=(i触摸?e.originalEvent.touch[0]:e).pageY-y0,
z=数学sqrt(dx*dx+dy*dy)/zoom,
移动=假;
............
............
//钟
self.setHand(dx/zoom,dy/zoom,!space,true);
//文档上的鼠标移动
$doc.off(mousemoveEvent).on(mousemoveEvent,函数(e){
e、 预防默认值();
..........
..........
移动=真;
self.setHand(x/zoom,y/zoom,false,true);
});
//文件上的鼠标
$doc.off(mouseupEvent).on(mouseupEvent,函数(e){
$doc.off(mouseupEvent);
e、 预防默认值();
...........
...........
if((空格| |移动)&&x==dx&&y==dy){
self.setHand(x/缩放,y/缩放);
}
.............
.............
$doc.off(mousemoveEvent);
});
}
//将时钟指针设置为(x,y)
ClockPicker.prototype.setHand=函数(x、y、roundBy5、拖动){
var弧度=数学atan2(x,-y),
isHours=this.currentView==='hours',
单位=Math.PI/(i小时| |取整5-6:30),
z=数学sqrt(x*x+y*y),
options=this.options,
内部=i小时和&z<(外部+内部半径)/2,
半径=内部?内部半径:外部,
价值
......
......
}
您必须仔细阅读jquery插件代码,要么修改它以满足您的需要,要么进入css并修改它以满足您的需要。仔细阅读代码,了解它是如何工作的,尽你最大的努力修改它,然后如果你有一个特定的问题,或者被卡在你的问题上,用你迄今为止的代码发布你的问题,你会不断地问问题,并且从不将任何答案标记为已接受。当人们花时间帮助你回复评论,将答案标记为选中,并使用UPVOUTS对帮助你编辑css和时钟控件的答案进行投票时,演示:仍然存在问题。假设您选择06:00并保存它。当您再次打开它时,它将在时钟选择器中选择18:00。我发现:inner=isHours&&z<(outerRadius+innerRadius)/2总是为假,这就是为什么半径总是等于outerRadius。我试过:inner=isHours&&z*zoom<(outerRadius+innerRadius)/2,它工作了,但是点击outerRadius中的任何hr都不再工作了。任何帮助!!这样做是的,我可以减少/扩大时钟选择器。但是,当我尝试将其缩放到0.8倍而不是1.5倍时,单击事件和拖动部分无法正常工作。我正在使用以下对齐方式:-placement:“top”,align:“bottom”,使其正常工作。(顺便说一句,它可以工作。)我展示了如何编辑这个库,现在是时候让你真正理解这个插件了,编辑它,让它以你想要的方式工作。哦!!对不起,我错过了js中的一个更改。现在它可以工作了。谢谢你的帮助!!这让我发疯。非常感谢。我想把它缩小一些,因为默认情况下它相当大。