2016-09-23 81 views
1

我正在尝试在单击按钮后将一个div移动到另一个div。动画/将一个div移动到NG-Click上的AngularJS中的另一个div

我知道这是如何工作在JQuery中,但有没有什么方法可以在angularJS中执行此操作?我正在使用angularJS进行网上商店应用程序,但实际上并没有对角动画做任何事情。添加产品后,会有一个移动div到另一个div,因此您知道您已将产品添加到您的购物车。

这里是为了证明我的意思的图像:

Move div in AngularJS

我只是简单地想DIV1移动DIV2。对此最佳做法是什么?任何帮助表示赞赏。额外的div1可以在动画之后隐藏,并在之前的位置重置。

+0

是DIV2固定的吗?或者它会在页面上的不同位置?如果你设置小提琴,我很有信心,我可以帮你。 – Nix

+0

Div2将位于不同的位置,具体取决于设备的宽度和高度。 –

回答

2

这是stab。它显示了您可以根据需要调整它的基本概念。

想法是你只是计算偏移量,然后使用ng-styleng-class转换它你需要通过设置calculatePosition变量来实现moveMe。我使用jQuery,因为我很懒。

function moveMe(target){ 
     //do caclculation here: 
    var clickMe = $('.clickMe'); 
    var target = $('.targetMe'); 
    var left = target.offset().left - clickMe.offset().left; 
    var top = target.offset().top - clickMe.offset().top; 
    $scope.calculatePosition = { 
    transform: 'translate(' + left + 'px,' + top + 'px)' 
    } 
    $scope.top = top; 
    $scope.left = left; 
    $scope.animate = true; 
} 

模板:

<div class='container'> 
    <div class='button clickMe' ng-style="calculatePosition" ng-class="{animate: animate}" ng-click="moveMe()"> 
    Div 1 
    </div> 

    <div class='button targetMe'> 
    Div 2 
    </div> 
</div> 
+0

谢谢,我调整了您的实施以适应项目。点击添加到产品按钮,它将触发moveMe()函数。这基本上将div移动到另一个div上,而不是在显示没有时动画回到原始位置。我做到了,所以动画不能用setTimeout()取消,所以不会有奇怪的事情发生。 –

相关问题