css3 transition学习笔记

简单了解transition

首先字面翻译是过渡的意思,这个属性是css3里的,可以让元素从一种样式变化为另一种样式时候添加效果。比如让元素从白色变成黑色,通常是马上变化,但是通过transition可以让这个改变按照某种速率去变化。

兼容性

目前从Can I Use查到浏览器的兼容性还是可以的。
transition浏览器兼容性

可动画属性的列表是

可动画属性

需要注意的小问题

在插入元素或者元素从隐藏到显示的时候立即使用过渡,会被认为没有开始状态,因此动画过渡也执行不了。可以通过setTimeOut来解决这个问题。举个小栗子
在这里插入图片描述
这样是没有动画效果,直接出来一个200px的div。只需要加个setTimeOut让需要变化的样式处于其中即可。
在这里插入图片描述
让display=‘block’放在setTimeOut是没有效果的,个人理解是虽然让他延迟显示,但是让他变宽的已经执行了,因此也是没有。

transition-property(动画指定过渡属性)

用来指定哪些属性需要执行动画过渡效果,默认是all,可以指定width或者其他,,如果你在hover悬浮时改变了背景色、宽度还有高度,但指定了是width的话这样就只有width会执行过渡效果。

transition-duration(过渡时长)

指定过渡的时长。或者为所有属性指定一个值,或者指定多个值,为每个属性指定不同的时长。
在这里插入图片描述

transition-timing-function

通过指定一个函数去定义属性怎么去变化,常用的有ease-in(加速)、ease-out(减速)、ease-in-out(先加速后减速)、linear(匀速)

贝塞尔曲线运动,这个可以自定义运动形式,在浏览器f12那里也可以自定义
在这里插入图片描述

transition-delay

让过渡效果延迟多久执行
transition-delay: 0.5s

transition复合写法

transition:transition-property,transition-duration,transition-timing-function ,transition-delay ;
transition:1s(动画执行时间),2s(延迟时间);
transition:width 3s,height 4s,transform 2s,background-color 3.5s ;

检测动画运行完成

这里使用到提供的函数ontransitionend,这个函数会在过渡完成时候触发,提供两个属性:

  • propertyName 字符串,指示已完成过渡的属性。
  • elapsedTime 指示当触发这个事件时过渡已运行的时间(秒)
    小栗子:

css

 .box{
      width: 100px;
         height: 100px;
         border: 1px solid #000;
         margin-bottom: 10px;
         background: seagreen;
         transition:width 3s,height 4s,transform 2s,background-color 3.5s ;
         transition-timing-function: ease;
   }
 .box:hover{
       width: 250px;
       height: 250px;
       background-color: slateblue;
       transform: rotate(360deg);
   }

html

 <div class="box">

  </div>

js
box.ontransitionend = function(obj){ console.log(obj.propertyName+'已完成用时'+obj.elapsedTime+'s'); }
运行结果:
在这里插入图片描述
如 果 取 消 了 过 渡 则 不 会 触 发 t r a n s i t i o n e n d 事 件 , 因 为 在 过 渡 完 成 前 动 画 的 属 性 值 改 变 了 。 \color{#c3c3c3}{如果取消了过渡则不会触发 transitionend 事件,因为在过渡完成前动画的属性值改变了。} transitionend


[1]:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值