JS事件触发CSS3的过渡效果

原本许多需要js才能实现的动画效果,通过CSS3就能轻易实现了,但是CSS3也有自身的不足,例如说在动画触发上就没有js灵活,因此可以考虑将CSS3与Js结合使用。

一般使用transition过渡动画都是利用css的状态:hover,focus,active 来触发,比如:

div{    
    width: 200px;
    height: 200px;    
    background: #f00;
    transition: height 2s,width 2s;
    -moz-transition: height 2s,width 2s; /* Firefox 4 */
    -webkit-transition: height 2s,width 2s; /* Safari and Chrome */
    -o-transition: height 2s,width 2s; /* Opera */
}
div:hover{ /* 鼠标悬浮触发 */
    width: 400px;
    height: 400px;
}

现在想通过js点击事件来触发CSS3的过渡动画,可以在js中通过dom操作来改变div的css的具体属性,如:

div{
    display: none;
    width: 200px;
    height: 200px;
    background: #f00;
    transition: height 2s;
    -moz-transition: height 2s; /* Firefox 4 */
    -webkit-transition: height 2s; /* Safari and Chrome */
    -o-transition: height 2s; /* Opera */
}
   

function clickMe() {
  document.getElementsByTagName('div')[0].style.display = 'block';
  setTimeout(() => {
    document.getElementsByTagName('div')[0].style.height = '400px';
  }, 100);  
}

一个需要注意的地方:
        当元素本身为display:none 时,若此时我们想通过js先将其变为display:block 并且随后再触发其他想要的transition过渡效果,需要在 js改变其为display:block 后用setTimeout延迟100ms左右的时间再去设置其他过渡动画,否则该过渡动画不会触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值