收藏
回答

关于动画

我想制作一个黑色View 点击之后 动画opacity到0  动画执行完后 display:none

请教一下

回答关注问题邀请回答
收藏

9 个回答

  • 智
    2018-01-04

    厉害!!!  完了,前端玩不过你们年轻人了

    2018-01-04
    有用
    回复
  • k.
    k.
    2018-01-04

    只是代码的书写不同

    2018-01-04
    有用
    回复
  • k.
    k.
    2018-01-04


    我写了两种,两个不太一样,你自己考虑哪种合适。

    第一种:


    css:

    @keyframes anmationStart{

      from{

        /* display: none; */

        opacity: 0;

      }

      to{

        /* display:inline-block; */

        opacity: 1;

      }

    }

    @keyframes maskStart{

      from{

        /* display: none; */

        opacity: 0;

      }

      to{

        /* display:inline-block; */

        opacity: 0.5;

      }

    }


    .termsServer{

      position: fixed;

      width: 650rpx;

      height: 800rpx;

      top: 45%;

      left: 50%;

      transform: translate(-50%,-50%);

       background: white;

      z-index: 10000000;

      border: 1px solid #ccc;

      overflow: hidden;

    }


    html:   {{animation}}为js控制的名称  内容是 maskStart,动画的名称 {{display}}为none或者block,由点击事件控制改变赋值。


    <view class='termsServer' style="animation:{{animation}} 1s;display:{{display}}">

    <view class='mask' bindtap='cancelTerms' style="animation:{{maskAnimation}} 1s;display:{{display}}"></view>


    第二种:

    .mask{

      width: 100%;

      height: 100%;

      background: rgba(0,0,0,0.5);

      position: fixed;

      top: 0;

      left: 0;

      z-index: 888;

    }

    .chooseBox {

      position: fixed;

      width: 100%;

      height: 100%;

      top: 50%;

      left: 50%;

      transform: translate(-50%,-50%);

      z-index: 999;

    }

    @keyframes opcityStart{

      from{

        opacity: 0;

      }

      to{

        opacity: 1;

      }

    }



    html:

    <view class='mask' style="{{showFlag?'animation:opacityStart 5s;display:block':'display:none'}}"></view>

    <view class="chooseBox" style="{{showFlag?'animation:opcityStart 1s;display:block':'display:none'}}">


    2018-01-04
    有用
    回复
  • 智
    2018-01-04

    楼上的方法是不行的 @keyframe我试了 没办法

    也许是我水平不行

    2018-01-04
    有用
    回复
  • k.
    k.
    2018-01-04

    在 css 样式类里定义一个 @keyframe 动画,在点击的时候把这个类名赋给animation,然后display:block或者none,会在动画执行完毕之后执行display动作。也可以考虑微信的动画wx.createAnimation也可以实现,不过个人习惯采用第一种。

    2018-01-04
    有用
    回复
  • 智
    2018-01-04

    我看大家都是这样用的,感觉这种语言设计,好弱智

    setTimeout(function(){

        self.setData({判断display的值})

    },动画所需时间);


    bindtransitionend 我也没看到有,不过这样的写法 看起来还高端一些

    2018-01-04
    有用
    回复
  • 影子
    影子
    2018-01-04

    wx.createAnimation的,我怎么没看到文档有这几个函数...

    2018-01-04
    有用
    回复
  • 赵青山
    赵青山
    2018-01-03

    是什么动画?是wx.createAnimation还是css3动画?在bindtransitionend或bindanimationend绑定的事件函数里进行动画结束后的操作好些

    transitionend会在 WXSS transition 或 wx.createAnimation 动画结束后触发
    animationstart会在一个 WXSS animation 动画开始时触发
    animationiteration会在一个 WXSS animation 一次迭代结束时触发
    animationend会在一个 WXSS animation 动画完成时触发


    2018-01-03
    有用
    回复
  • 影子
    影子
    2018-01-03

    动画之后

    setTimeout(function(){

        self.setData({判断display的值})

    },动画所需时间);

    2018-01-03
    有用
    回复
登录 后发表内容