我在互联网上搜索了3个多小时,但我的代码中没有任何建议可以正常工作。我想做的是每次单击将图片向左滑动一次(总共3张图片),并且当屏幕中最后一张图片停止时,向左滑动并滑回到第一张图片。为此,我需要检测第一张图片碰到某个点(左边180em)时的左边距,并将其与“ ems”值进行比较(下面的代码)。 “ if”语句从不发芽,它始终指向“ else”。

我尝试使用“ $('#picture1')。offsetLeft”,“ $('#picture1')。layerX”,“ $('#picture1')来获取第一张图片的左边界位置(或边距)。离开”,但他们都没有工作。

如果您可以将我定向到另一个网站,Stackoverflow中的另一个问题,或者给我一个解决方案,我将不胜感激。

注意:如果我的代码有错误或我的问题纠正了我,我对javascript非常陌生。谢谢。

var position = parseInt(jQuery("#picture1").css("margin-left"));
var left_border = '180ems';
    $(function() {
        $(".button").click(function() {
            if (position > 180ems) {
               $("#picture1").animate({
                   left: '-=60em'
               }, 600);
               $("#picture2").animate({
                   left: '-=60em'
               }, 600);
               $("#picture3").animate({
                   left: '-=60em'
               }, 600);
            }
            else {
                $("#picture1").animate({
                   left: '+=180em'
               }, 600);
               $("picture2").animate({
                   left: '+=120em'
               }, 600);
               $("#picture3").animate({
                   left: '+=60em'
               }, 600);
            };
        });

最佳答案

您始终可以获取以像素为单位的值,然后尝试将其转换为ems,请参见此问题jQuery/JavaScript: convert pixels to em in a easy way

编辑:或者,您可以从左侧放置一个不可见元素180ems,然后从该元素中获取该元素的像素值,然后可以使用该值进行比较。

09-27 10:14