首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs ng-animate + css过渡以实现滑动效果

Angularjs ng-animate + css过渡以实现滑动效果
EN

Stack Overflow用户
提问于 2013-04-07 17:13:44
回答 2查看 15.5K关注 0票数 6

我正在尝试使用Angular的新ng-animate功能来实现滑动效果。我从演示站点获取了一些代码,并准备了一个fiddle

问题是,当从数组中交换项目时,滑动DIV下的元素会不断上下移动。我尝试了line-height,但没有成功。

是否有可能修复上述行为?或者只使用angular和CSS就能实现的更好的方法?

EN

回答 2

Stack Overflow用户

发布于 2013-04-07 21:48:23

您可以将输入和按钮包装在div中,也可以将其放在绝对位置。

这里的是一个

HTML

代码语言:javascript
复制
<div ng-app="">    
<div ng-controller='anim' >
    <div ng-repeat="item in lst"  ng-animate=" 'wave' ">
    {{item}}
    </div>
    <div class="wrapperInput">
        <input ng-model="cmt"> 
    <button ng-click="clk()"> Slide </button>
        </div>
    </div>  

</div>

CSS

代码语言:javascript
复制
  </style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ --> 
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<style>

/**/
.wrapperInput{position:absolute;top:30px;}
/**/

.wave-enter-setup, .wave-leave-setup {
  -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) .5s;
  -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
  -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
  transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) .5s;
    line-height:100%;
}

.wave-enter-setup {
  position:relative;
  left:100%;
 line-height:100%;
}


.wave-enter-start {
  left:0;
line-height:100%;
}

.wave-leave-setup {
  position:absolute;
  left:0;
line-height: 100%;
}

.wave-leave-start {
  left:-100%;
  line-height: 10%;
}

JS

代码语言:javascript
复制
function anim($scope,$timeout){
    $scope.lst = [];
    $scope.master = ['[1] John who is 25 years old.','[2] Jessie who is 30 years old.','[3] Johanna who is 28 years old.','[4] Joy who is 15 years old.','[5] Mary who is 28 years old.','[6] Peter who is 95 years old.','[7] Sebastian who is 50 years old.','[8] Erika who is 27 years old.','[9] Patrick who is 40 years old.','[10] Samantha who is 60 years old.'];

$scope.lst.unshift($scope.master[Math.floor((Math.random()*10)+1)]);

    $scope.clk = function() { clik();}

    function clik() {
    //alert('here');
         $scope.lst.unshift($scope.master[Math.floor((Math.random()*10)+1)]);         
         $scope.lst.pop();  
        $timeout(function(){ clik();},2000);
    }

    clik();

};
票数 3
EN

Stack Overflow用户

发布于 2013-04-07 21:47:24

试试这个:

CSS:

代码语言:javascript
复制
.wave-enter-setup, .wave-leave-setup {
  -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) .5s;
  -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
  -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
  transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) .5s;
  position:relative;
  display:table;
  float:left;
}

.wave-enter-setup {
  left:100%;
}

.wave-enter-start {
  left:0;
}

.wave-leave-setup {  
  left:0%;
}

.wave-leave-setup.wave-leave-start {
  left:-100%;
}

.floatNone{ clear:both; position:relative;}

HTML:

代码语言:javascript
复制
<div ng-app="">    
    <div ng-controller='anim' >
        <div ng-repeat="item in lst"  ng-animate=" 'wave' " >{{item}}</div>
        <div class="floatNone">
            <input ng-model="cmt" >     
            <button ng-click="clk()"> Slide </button>
        </div> 
     </div>    
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15860783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档