两种方式实现CSS动画

标签: css动画 animation transition
32人阅读 评论(0) 收藏 举报
分类:

实现CSS动画有两种主要的方法:过渡动画(transition)和animation动画


第一种:过渡动画(transition)。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>CSS动画之transition</title>
	<style>
		/*点击按钮执行动画*/
		.transi1{
			position: absolute;
			top: 260px;
			left:10px;
			width: 200px;
			height: 200px;
			background-color: red;
			transition: all 2s ease;
		}
		.transi2{
			background-color: blue;
			transform: rotate(45deg);
			left: 400px;
		}

		/*鼠标hover时的动画*/
		.hover{
			width: 200px;
			height: 200px;
			background-color: blue;
			transition: background-color 2s,width 2s;
		}
		.hover:hover{
			background-color: red;
			width: 300px;
		}

	</style>
</head>
<body>
 <div class="hover">第一个过渡动画</div>
 <hr>
 <button>执行动画</button>
 <div id="di1" class="transi1">第二个过渡动画</div>
 <script>
 	var btn  = document.getElementsByTagName("button")[0];
 	btn.addEventListener("click",function(){
 		var di = document.getElementById("di1");
 		di.setAttribute("class","transi1 transi2");
 	});
 </script>
</body>
</html>
 这个例子就比较直白地介绍了过渡(transition)形成的动画,所谓过渡动画,也就是元素从一种样式逐渐改变为另一种样式的效果。
在第一个动画中就是hover前后两种样式。
在第二个动画中就是从样式"transi1"过渡到样式"transi1 transi2"。

要实现过渡动画有两个必须点(和其他可选属性):
   1.指定要添加过渡效果的CSS属性(或者"all");

   2.指定过渡效果的持续时间。

注意:
1.transition属性写在过渡前后两个样式中的哪一个中无所谓。

2.在实现过渡动画时,很多初学者会把transition和transform搞混。要记住,transition才是实现过渡动画的关键,transform只是一个css转换属性(在本质上和其他css属性一样,可以当做transition-property的属性值)。



第二种:animation动画。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>CSS动画之animation</title>
	<style>
		@keyframes wlk{
			100%{
				left: 300px;
				background-color: blue;
				transform: rotate(45deg);
			}
		}
		.transi1{
			position: absolute;
			top: 60px;
			left:10px;
			width: 200px;
			height: 200px;
			background-color: red;
		}
		.transi2{
			animation: wlk 2s;
			animation-fill-mode: forwards;
		}
	</style>
</head>
<body>
 <button>执行动画</button>
 <div id="di1" class="transi1">第二个过渡动画</div>

 <script>
 	var btn  = document.getElementsByTagName("button")[0];
 	btn.addEventListener("click",function(){
 		var di = document.getElementById("di1");
 		di.setAttribute("class","transi1 transi2");
 	});
 </script>
</body>
</html>
 这个例子介绍了animation形成的动画.
用animation动画的关键:
1.用@keyframes定义规则,并绑定到一个选择器上。
2.规定动画的名称(animation-name),规定动画的时长(animation-duration)。
也就是这个动画中的“animation: wlk 2s;”

注意:
1.@keyframes规则的写法。

2.animation和transition类似,是很多属性的简写形式,需要仔细掌握它们。



什么时候用transition过渡动画,什么时候用animation?

        其实如果掌握的熟练的话这两种动画是可以互相转换的。个人感觉在鼠标hover时的动画效果大多使用过渡动画,在需要鼠标触发时大多使用过渡动画;在网页加载后立即执行不需要手动触发时大多使用animation动画。


在上面的例子中我都用了JavaScript,其实在使用css动画时是可以不需要JavaScript的,这里为了效果才改成用按钮来触发动画。

查看评论

多线程实现的两种方式及其区别

继承Threadpublic class Demo2_Thread { public static void main(String[] args) { MyThread mt ...
  • StriverLi
  • StriverLi
  • 2017-02-26 21:07:04
  • 4823

Thread 两种实现方式的区别

一、类继承方式实现线程package thread.ticket; class Ticket1 extends Thread{ public Ticket1(String name) ...
  • limuzi13
  • limuzi13
  • 2015-09-27 23:15:38
  • 1130

Mybatis两种开发方式

MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架,具有的特点,避免了JDBC对数据库进行频繁连接开启和关闭造成数据库资源浪费和硬编码现象的出现。 MyBatis开发dao具有...
  • u010927105
  • u010927105
  • 2016-12-31 08:44:07
  • 1136

两种动态代理的实现方式

最近浏览招聘信息,看到部分企业提到个人博客。我没有写博客的习惯,实话来说,我根本就没想到写博客。可能是我涉行不深,没有养成这种观念。看到很多大神都有自己的博客,里面各色各样的技术文章。让我非常向往。为...
  • u010887522
  • u010887522
  • 2015-03-17 17:05:50
  • 481

简单介绍AOP两种实现方式

@(aop)[jdk,cglib] JDK 动态代理 CGLib动态代理JDK 动态代理java代理模式学习从入门到放弃CGLib动态代理 通过JDK的动态代理 你需要做的是先声明一个动作接口(代理接...
  • u012188107
  • u012188107
  • 2017-10-09 17:25:45
  • 155

线程有两种实现方法的具体区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?  第一种方式:使用Runnable接口创建线程 第...
  • chajinglong
  • chajinglong
  • 2015-08-24 13:44:30
  • 8156

单例模式的两种实现方式及区别

 1:类加载时进行对象的实例化:public class SingletonA {  //SingletonA的唯一实例 private static SingletonA instance = ne...
  • jun_yuner
  • jun_yuner
  • 2007-12-10 16:55:00
  • 6066

BroadcastReceiver的两种实现方式

BroadcastReceiver是Android中的广播接收者,既然有接收,自然就有发送,首先看如下发送程序: Intent broadInt = new Intent("myChannel"); ...
  • geloin
  • geloin
  • 2014-12-23 16:11:51
  • 1302

创建线程的两种方式及原理

创建线程的第一种方式: 1.  定义类继承Thread类。 2.  重写run()。 3.  创建线程对象。 4.  调用start()启动线程。 class Thread {     ...
  • fandoudou123
  • fandoudou123
  • 2015-08-20 11:51:45
  • 681

Java中两种多线程实现方式的区别

在程序开发中用到多线程,正统的方法是使用Runnable接口,相比继承Thread类,Runnable接口有以下两点好处: 1、避免单继承机制的局限,一个类可以实现多个接口 2、适用于资源的共享 下面...
  • june_ruikang
  • june_ruikang
  • 2016-02-26 21:00:10
  • 816
    个人资料
    持之以恒
    等级:
    访问量: 437
    积分: 237
    排名: 32万+
    文章存档
    最新评论