javascript - 从右到左动画div,然后再从左到右动画

标签 javascript jquery html css animation

如果单击了一个按钮,我会尝试将 div 从其原始位置动画化到屏幕左侧。如果单击另一个按钮,那么我希望它动画回到它的原始位置。我能够弄清楚如何让它从右到左设置动画,但我无法将它设置回原来的位置。

var left = $('#coolDiv').offset().left;

$("#b1").click(
  function() {
    $("#coolDiv").css({
      left: left
    }).animate({
      "left": "0px"
    }, "slow");
  }
);

$("#b2").click(
  function() {
    $("#coolDiv").css({
      right: right
    }).animate({
      "right": "0px"
    }, "slow");
  }
);
#coolDiv {
  width: 50px;
  height: 50px;
  position: absolute;
  right: 0;
  background: yellow;
}
#b1 {
  margin-top: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="coolDiv">cool</div>
<button id="b1">left</button>
<button id="b2">right</button>

http://jsfiddle.net/XqqtN/5385/

最佳答案

left CSS 设置为窗口宽度减去框的宽度。

$("#b1").click(function() {
  // Get the current left of the div
  var left = $('#coolDiv').offset().left;

  $("#coolDiv").css({
    left: left
  }).animate({
    left: 0
  }, "slow");
});

$("#b2").click(function() {
  var left = $(window).width() - $('#coolDiv').width();

  $("#coolDiv").css({
    left: 0
  }).animate({
    left: left
  }, "slow");
});
#coolDiv {
  width: 50px;
  height: 50px;
  position: absolute;
  right: 0;
  background: yellow;
}
#b1 {
  margin-top: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="coolDiv">cool</div>
<button id="b1">Left</button>
<button id="b2">Right</button>


优化代码:

// Common function to animate Div on both button clicks
function animateDiv(left, right) {
  $('#coolDiv').css({
    left: left
  }).stop(true, true).animate({
    left: right
  }, 'slow');
}

$('#b1').click(function() {
  animateDiv($('#coolDiv').offset().left, 0);
});

$('#b2').click(function() {
  animateDiv(0, $(window).width() - $('#coolDiv').width());
});
#coolDiv {
  width: 50px;
  height: 50px;
  position: absolute;
  right: 0;
  background: yellow;
}
#b1 {
  margin-top: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="coolDiv">cool</div>
<button id="b1">Left</button>
<button id="b2">Right</button>

关于javascript - 从右到左动画div,然后再从左到右动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33953721/

相关文章:

javascript - 在 javascript 中每次 onclick 和循环后追加数组

javascript - magento 上商店定位器的下拉代码

javascript - 在 Chart.js 中将 Y 轴值从实数更改为整数

javascript - 从表创建 jquery 实时预览

javascript - 带有悬停的 jQuery 下拉菜单无法正常工作

JQuery::捕获悬停事件并更改子div上的CSS

jquery - 选择另一个 div 时删除预加载的类

javascript - 如何检测用户是否屏蔽了摄像头?

jquery - 剑道 UI 网格 : radio button and pagination issue

php - 日期 highstock highchart