javascript - 度。轮流

标签 javascript css

我正在构建时间选择器,您可以在其中设置“真实”时钟的时间。 我正在使用此脚本找到鼠标的位置和度数 + 旋转 div

var g;
        var h;
        if (e.target.id == "rotationSliderContainer") {

            g = e.offsetX;
            h = e.offsetY;
        } else {
            g = e.target.offsetLeft + e.offsetX;
            h = e.target.offsetTop + e.offsetY;
        }
        var atan = Math.atan2(g - radius, h - radius);
        deg = -atan / (Math.PI / 180) + 180;

        var presne = Math.abs(deg - (Math.round(deg / 30) * 30));

        if (presne <= 2) deg = Math.round(deg / 30) * 30;

        if(deg == 360)
                deg = 0;
        two.style.transform = "rotate(" + deg + "deg)";

它工作正常,但几乎没有错误,每当我想在 12 和 1,2,3 之间移动 div 时,它会在 12 和其中一个值之间翻转。

这是一个现场演示 http://jsfiddle.net/Trolstover/afo7ky03/1/ 有什么捷径可以防止这种不良行为,还是我只是在某处犯了错误?

最佳答案

这个 if/else 条件是在 rotationSliderContainer 和其他 DOM 元素(例如 rotationSlider 和 body)中的事件之间切换。其他情况是你的罪魁祸首。

if (e.target.id == "rotationSliderContainer") {

        g = e.offsetX;
        h = e.offsetY;
    } else {
        g = e.target.offsetLeft + e.offsetX;
        h = e.target.offsetTop + e.offsetY;
    }

去掉这两行应该没问题。

    if (e.target.id == "rotationSliderContainer") {

        g = e.offsetX;
        h = e.offsetY;
    }

酷时钟^_^

关于javascript - 度。轮流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277517/

相关文章:

javascript - 图片库中的下一个/上一个按钮

javascript - 我如何在 Rails 7 中使用 Leaflet?

javascript - 流体圆形元素旁边的圆形元素

html - 将某些 html 元素复制或转换到新的子窗口

css - 带有图像的自定义网格 - 响应问题

Javascript 百分比验证

javascript - VueJS 计算数据和范围

javascript - 在其他网络上的 Production Web 应用程序中查找 Philips Hue Bridge

javascript - 是否可以将文本(占位符或标签)添加到输入类型 ="color"并使其可点击?

html - 隐藏宽度大于正文的图像溢出