最近的工作以移动端项目居多,经常会涉及一些比较小的动画效果,所以使用css3设计动画效果也就越发熟练起来。但是不得不承认,一直以来都是凭感觉使用transform, transition, animation,而没有深究过这三者之间的真正的内在的区别,以及一些触发条件。

仅仅知道从字面上理解这三者:

transform: 变形

transition: 过渡

animation:动画

transform基本上用在静态元素的变形上面,其本身并不具备动画效果,所以此处略去不说。

关于animation前面也踩到了坑,也填过一些坑,至少目前在使用上问题不太大了,今天做的一个效果是:活动结束页面上,有一艘小船,为了具有一点形象性的意义,我给小船做了一个移除页面的动画,移除页面,不能再回来了。

.over-ship{
width: 4.5rem;
height: 2.85rem;
margin-top: 1rem;
float: right;
background: url(../../images/saishihui/ship.png) no-repeat center center / contain;  /**小小船只的图片*/
-webkit-animation: leaveOver 3s ease-in;
     animation: leaveOver 3s ease-in;
-webkit-animation-fill-mode:forwards;
animation-fill-mode:forwards;
} @-webkit-keyframes leaveOver{
100% {
margin-right: -4.5rem;
}
}
@keyframes leaveOver{
100% {
margin-right: -4.5rem;
}
}

w3scool上解释:animation-fill-mode 属性规定动画在播放之前或之后,其动画效果是否可见。

用法:animation-fill-mode : none | forwards | backwards | both;

知道用法即可。

这里更多关注一下transition。用法不多说,主要说一下transition的触发方式。

一般分为伪类触发,媒体查询触发,JavaScript触发。

常用伪类触发包括:hover、:focus、:active等,应该比较熟悉。

媒体查询触发,从字面意思也基本能够理解。

主要说一下JavaScript触发,一直以来,我都是认为,给一个DOM元素添加不同的class,在新增的class里面设置transition,通过addClass(newClass)即可触发transition,但是今天在项目中使用该方法之后,发现并不能触发这个transition,然后就是各种搜索原因。

发现可以通过DOM操作其css属性,实现transition的过渡效果。

$('.override').get()[0].style.setProperty('opacity', 1);

这时就能够触发从opacity从0到1的效果,有一点需要注意的是如果dom元素先设置了dispaly=none的属性,则需要在 js改变其为display:block 后延迟一段时间之后再去设置其他过渡动画,否则该过渡动画不会触发。

// 点击关闭按钮。关闭弹框
$('.override').addClass('in');        // 设置.override显示
setTimeout(function () {            // 延迟设置opacity显示的动画
  $('.override').get()[0].style.setProperty('opacity', 1);
}, 300);

  

关于transition和animation的更多相关文章

  1. 弄清 CSS3 的 transition 和 animation

    弄清 CSS3 的 transition 和 animation transition transition 属性是 transition-property, transition-duration, ...

  2. css3实践之图片轮播(Transform,Transition和Animation)

    楼主喜欢追求视觉上的享受,虽常以牺牲性能无法兼容为代价却也乐此不疲.本文就通过一个个的demo演示来简单了解下css3下的Transform,Transition和Animation. 本文需要实现效 ...

  3. css010 css的transform transition和animation

    css010 css的transform transition和animation 看着没有一个能想起他们是干什么的.. 1.         Transform    Transform(变形) r ...

  4. transition和animation动画简介

    本文介绍CSS动画的两大组成部分:transition和animation.我不打算给出每一条属性的详尽介绍,那样可以写一本书.这篇文章只是一个简介,帮助初学者了解全貌,同时又是一个快速指南,当你想不 ...

  5. CSS3中动画属性transform、transition 和 animation

    CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明:        transform   从字面来看transform的释义为改变,使 ...

  6. transition与animation

    以前,一直都知道,transition是animation的一个简化版,甚至不算是动画,而是一种过渡. transition的用法 早两天用transition写了一个按钮滑动的效果,类似于IOS的设 ...

  7. css3 transition 和 animation实现走马灯

    这段时间在做一个App,H5的开发.页面上有公告 以走马灯的形式显示出来. 在开始直接用的marquee标签,后来发现在ios客户端,走马灯移动不够平滑,有抖动现象. 对于有强迫症的我而言是无法忍受的 ...

  8. CSS3动画 transition和animation的用法和区别

    transition和animation都是CSS3新增的特性,使用时需要加内核 浏览器 内核名称 W3C   IE  -ms-  Chrome/Safari -webkit-   Firefoc - ...

  9. css3的动画特效--元素旋转(transition,animation)

    开发中,视觉要你实现一个元素的旋转问题,比如说如下图所示: 思路:首先动画动效肯定离不开anmimation动画. 和transition动画一样,animation动画也是CSS3动画的一种,这类动 ...

  10. Vue中transition和animation的使用

    一:二者的对比 1.动画循环就用animation.在animation中有一个animation-iteration-count属性可以定义循环次数.transition是执行一次以后就不会执行,但 ...

随机推荐

  1. Jmeter性能监测及安装插件(推荐)

    本文部分理论转自Jmeter官网:https://jmeter-plugins.org/wiki/PerfMon/  ,并结合个人实践编写 一.介绍 在负载测试期间,了解加载服务器的运行状况很重要.如 ...

  2. Jmeter ----Bean shell使用

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  3. Hbase 简介+环境安装配置教程

    HBase介绍 HBase是参考google的bigtable的一个开源产品,建立在hdfs之上的一个提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.是一种介于nosql和RDBMs之间的 ...

  4. 【Spark Java API】broadcast、accumulator

    转载自:http://www.jianshu.com/p/082ef79c63c1 broadcast 官方文档描述: Broadcast a read-only variable to the cl ...

  5. WyBox 7620a 启用第二个串口

    要修改的文件有两个 mt7620a.dtsi MT7620a.dts 1.进入target/linux/ramips/dts/ mt7620a.dtsi 把”disabled”改为”ok”,添加两行 ...

  6. adb命令模拟按键输入keycode

    adb命令模拟按键输入keycode 2017年05月18日 14:57:32 阅读数:1883 例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent ...

  7. pytest.6.Parametrize Fixture

    From: http://www.testclass.net/pytest/parametrizing_fixture/ 背景 @pytest.mark.parametrize 装饰器可以让我们每次参 ...

  8. 【jdk】使用wget下载jdk8

    因为在oracle官网下载jdk需要 如果直接在linux中使用 wget命令下载,实际下载是一个html文件,所以需要通过一下命令 wget --no-check-certificate --no- ...

  9. PAT 乙级 1047 编程团体赛(20) C++版

    1047. 编程团体赛(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 编程团体赛的规则为:每个参赛队由若 ...

  10. HEAD插件安装

    简介 是一个HTML5编写的集群操作和管理工具,可以对集群进行傻瓜式操作,Head插件中可以显示集群的拓扑结构,执行索引和节点级别等操作,同时也可以输入RESTful命令和Elasticsearch交 ...