CSS3 transition v.s. animation property

by ShadowKao

HTML

<div class="container">
  <div class="trans">
	 transition會自動反向播放動畫
	</div>
	<div class="animate">
	 animation不會自動反向播放動畫
	</div>
	<div class="animate_forTrans">
	 animation硬要學transition反向播動畫(pure css,網頁一載入就執行動畫)
	</div>
		<div class="animate_forTrans2">
	 animation硬要學transition反向播動畫(網頁一載入不執行)
	</div>
</div>

CSS

.container
{
	 width:100%;
	 height:100%;
	 background:#fff;
}
.container > div
{
	width:250px;
	height:150px; 
}
.trans
{
	background:#b68ee7;
	color:#fff;
	 
	transition:1s;
  transform:scale(1);/*正常大小*/
}
.trans:hover
{
	transform:scale(1.5);/*放大1.5倍*/
	
}
/*定義動畫關鍵影格*/
@keyframes ZoomOut /*縮小*/
{
	0%{ transform:scale(1.5);}
	100%{transform:scale( 1);}
} 
@keyframes ZoomIn /*放大*/
{
		0%{ transform:scale(1);}
	100%{transform:scale(1.5);}
}
.animate /*第二個區塊*/
{
	background:#fadc00;
	color:#fff;
	 
	animation-duration:1s;
	animation-fill-mode:both;
	
}
.animate:hover
{
	animation-name:ZoomIn; /*放大*/
}

.animate_forTrans  /*第三個區塊*/
{
	background:#434eae;
	color:#fff; 
	animation-duration:1s;
	animation-fill-mode:both;
	
	animation-name:ZoomOut;/*先縮小到預設寬高*/
	  
}
.animate_forTrans:hover {  /*第三個區塊hover*/
	animation-name: ZoomIn;/*放大*/
	  
}
.animate_forTrans2
{
	background:#4CAF50;
	color:#fff;
	 
	animation-duration:1s;
	animation-fill-mode:both; 
	/*預設把animation-name拿掉,網頁一載入不執行動畫*/
}
/*animate_forTrans2第四個區塊的動畫播放,改交由JS負責觸發*/
.enter
{
	animation-name: ZoomIn;/*放大*/
	
}
.leave
{
	animation-name: ZoomOut;/*縮小*/
}

JavaScript

$(".animate_forTrans2").mouseenter(function(){
 $(this).removeClass("leave").addClass("enter");

}); 
$(".animate_forTrans2").mouseleave(function(){
 $(this).removeClass("enter").addClass("leave");

} );