代码之家  ›  专栏  ›  技术社区  ›  Tobias Glaus

100%加减左属性无效

  •  2
  • Tobias Glaus  · 技术社区  · 8 年前

    因此,我得到了一个具有以下CSS的元素:

    top: 0;
    left: 0;
    width: 100%;
    height: 300px;
    border-radius: 0;
    box-shadow: none;
    transition: all .3s ease-in-out;
    

    单击时,我正在尝试添加/减去 100% left 属性,具体取决于单击的按钮:

    $('.next, .prev').click(function() {
       if ($(this).hasClass("next")) {
        $(".element").animate({
          left: '-=100%'
        }, 500);
       }
       else if ($(this).hasClass("prev")) {
        $(".element").animate({
          left: '+=100%'
        }, 500);
       }
    });
    

    当我点击其中一个按钮时,效果很好,但在第二次按下时,它会跳到一个百分比,这对我来说没有意义,即。 1002.22% , -802.222 , ...

    你有一个完整的例子 here 单击元素以打开内容后。

    有人知道为什么它没有按照我想要的方式行事吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   danielcooperxyz    8 年前

    无法以百分比形式检索元素css值,因此当您尝试进一步加减时,它会对像素值进行加减。我在尝试在动画调用之外执行减法时发现了这一点。

    $('.portfolio-next, .portfolio-prev').click(function() {
      var leftVal = parseFloat($(".duplicated .dupAnim").css('left'));
       if ($(this).hasClass("portfolio-next")) {
         leftVal = (leftVal - 100) + '%';
    
       }
       else if ($(this).hasClass("portfolio-prev")) {
         leftVal = (leftVal + 100) + '%';
       }
    
        $(".duplicated .dupAnim").animate({
          left: leftVal
        }, 500);
    });
    

    上面的代码不起作用,但说明了返回值不是百分比的类似问题。

    为了解决这个问题,您可能需要保留一个计数(在单独的属性或变量中)它被添加或减去的次数。这是一种黑客行为,我可能不会选择这样做。

    或者有一个答案 here 关于从像素值计算百分比 css() 返回。