javascript - if 条件仅适用于警报并且位置已重置?

标签 javascript jquery html css

代码是播放器转到用户点击的地方,但现在我想让 Angular 色看它去的 X 轴。 问题是它仅在您有警报时才起作用,但只有在警报给出错误时才起作用,因为如果警报不给出错误,它就不起作用。 另一个问题是变换 translate3d 被删除,然后播放器返回到相同的位置,尽管 scaleX 发生了变化。

我是 jquery 的新手,我不知道。

$(document).on("click mousedown", "#Park", function(e) {
    var x = e.clientX;
    var y = e.clientY;
    var newposX = x - 60;
    var newposY = y - 60;
    var n = $(".circle").offset()
    if (newposX < n.left) {
        $(".circle").css("transform", "scaleX(-1)");
        alert(ok)
    }
    $(".circle").css("transform", "translate3d(" + newposX + "px," + newposY + "px,0px)");

    setTimeout(function() {
        $(".circle3").css("display", "none");
        $(".circle2").css("display", "block");
    }, 2000);
    $(".circle2").css("display", "none");
    $(".circle3").css("display", "block");
});

最佳答案

在条件之后,您将立即用新值覆盖 transform,这意味着 scaleX() 会立即被覆盖,除非您的代码在 警报()

相反,像这样编写条件,以确保在设置 translate3d()scaleX() 不会被覆盖:

if (newposX < n.left) {
    $(".circle").css("transform", "scaleX(-1) translate3d(" + newposX + "px," + newposY + "px,0px)");
} else {
    $(".circle").css("transform", "translate3d(" + newposX + "px," + newposY + "px,0px)");
}

或者,你可以这样写,在我看来这样更容易阅读:

let transform = `translate3d(${newposX}px, ${newposY}px, 0px)`;
if (newposX < n.left) {
    transform = 'scaleX(-1) ' + transform;
}
$('.circle').css('transform', transform);

关于javascript - if 条件仅适用于警报并且位置已重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982455/

相关文章:

javascript - 更改 HTML 页面上的列

javascript - 如何将grails json数据作为指令属性值传递给angularjs指令

javascript - 使用 gulp-jasmine 指定依赖关系

javascript - jquery 中的 bind 和 unbind 是什么意思?

jquery - 如何在下载实际图像时显示加载图像

javascript - Canvas 中的重复图像?

javascript - 在模态框中加载完整的 HTML 页面

javascript - Node.JS 主体解析器问题

javascript - 悬停时元素焦点

html - href 到 wordpress 生成的 li