javascript - Angularjs 如何实现这个动画?
高洛峰
高洛峰 2017-04-10 15:42:47
[JavaScript讨论组]

这个地址所示的例子是我用Jquery实现的这个动画:http://infinitynewtab.com/test/2/index.html

点击增加会增加一个圆圈并带有动画效果,点击任意一个圆圈它会消失并带有动画效果。

在angularjs上可以实现增加删除,想请问要加上动画效果该如何实现?
angularjs示例地址:http://infinitynewtab.com/test/1/index.html
html+css



    
    angularJs动画
    
    
    
    
    


    
    

{{t}}

js:

Array.prototype.remove=function(dx) { 
    if(isNaN(dx)||dx>this.length){return false;} 
    for(var i=0,n=0;i
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
怪我咯

先上demo (我使用的Angular的版本是1.4.3
基本上在CSS样式上添加一些特定的类就可以了,所以先让你看看我的CSS文件:

h1{
    text-align: center;
}
button{
    text-align: center;
    width: 180px;
    height: 30px;
    margin: 0 auto;
    line-height: 30px;
    font-size: 15px;
}


.circle{
    width:80px;
    height:80px;
    margin:50px;
    float: left;
    background-color:red;
    border-radius:100%;
    text-align:center;
    font-size:30px;
    line-height:80px;
    color:#fff;
    cursor: pointer;
    transition:transform 0.3s ease;
    -webkit-transition:transform 0.3s ease;
    -ms-transition:transform 0.3s ease;
    -moz-transition:transform 0.3s ease;
    transform:scale(1);
    -webkit-transform:scale(1);
    -ms-transform:scale(1);
    -moz-transform:scale(1);
}
.circle.ng-enter{
    animation: my_enter_animation 0.5s linear;
    -webkit-animation: my_enter_animation 0.5s linear;
}
.circle.ng-leave {
    animation: my_leave_animation 0.5s linear;
    -webkit-animation: my_leave_animation 0.5s linear;
}

@keyframes my_enter_animation {
    from {
        opacity:0;
        transform:scale(0);
        -webkit-transform:scale(0);
        -ms-transform:scale(0);
        -moz-transform:scale(0);

    }
    to {
        opacity:1;
        transform:scale(1);
        -webkit-transform:scale(1);
        -ms-transform:scale(1);
        -moz-transform:scale(1);
    }
}

@-webkit-keyframes my_enter_animation {
    from {
        opacity:0;
        transform:scale(0);
        -webkit-transform:scale(0);
        -ms-transform:scale(0);
        -moz-transform:scale(0);

    }
    to {
        opacity:1;
        transform:scale(1);
        -webkit-transform:scale(1);
        -ms-transform:scale(1);
        -moz-transform:scale(1);
    }
}

@keyframes my_leave_animation {
    from {
        opacity:1;
        transform:scale(1);
        -webkit-transform:scale(1);
        -ms-transform:scale(1);
        -moz-transform:scale(1);

    }
    to {
        opacity:0;
        transform:scale(0);
        -webkit-transform:scale(0);
        -ms-transform:scale(0);
        -moz-transform:scale(0);
    }
}

@-webkit-keyframes my_leave_animation {
    from {
        opacity:1;
        transform:scale(1);
        -webkit-transform:scale(1);
        -ms-transform:scale(1);
        -moz-transform:scale(1);

    }
    to {
        opacity:0;
        transform:scale(0);
        -webkit-transform:scale(0);
        -ms-transform:scale(0);
        -moz-transform:scale(0);
    }
}

其实主要就是添加了两个类circle.ng-entercircle.ng-leave,利用AngularJS的动画机制,很方便的就实现了你想要的效果。

我的HTML代码如下:

<body ng-controller="MyController as vm">
    <h1>AngularJS的解决方案</h1>
    <button ng-click="vm.add()">点击添加</button>
    <hr/>
    <p class="circle" ng-repeat="c in vm.lists" ng-bind="c | number: 0" ng-click="vm.remove($index)">
    </p>
</body>

我的JS文件如下:

(function(){
    angular.module("MyApp", ['ngAnimate'])
        .controller("MyController", MyController);

    MyController.$inject = [];

    function MyController(){
        var vm = this;
        vm.lists = [1,2,3];
        vm.add = add;
        vm.remove = remove;

        function add(){
            var item = Math.random()*10;
            vm.lists.push(item);
        }

        function remove(index){
            if(vm.lists.length){
                vm.lists.splice(index, 1);
            }
        }
    }
})();

应该就是这样了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号