Javascript 如何调整时钟选择器的大小?

Javascript 如何调整时钟选择器的大小?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,这里是我下载clockpicker jquery插件源代码的链接 我在一个对话框中使用了时钟选择器,但我需要调整它的大小。 时钟选择器没有这样的属性,在这里我可以提到尺寸。 我需要在css中做什么更改才能更改时钟选择器的高度和宽度 我可以通过更改clockpicker popover类中的一些属性来更改长方体的宽度和高度,但更改clockpicker dial和clockpicker tick类并没有帮助 实际时钟(小时和分钟)不变。我看到这是用javascript代码准备的,一些变量声明如下

这里是我下载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中的一个更改。现在它可以工作了。谢谢你的帮助!!这让我发疯。非常感谢。我想把它缩小一些,因为默认情况下它相当大。