CSS3中 animation 和 transition 俩样式都能创建动画效果,而且是后台C++执行的,所以效率比普通jQuery的js模拟动画的效率高很多,所以建议大家能用css实现的效果都用css。
transition的使用比较简单,这里就不介绍了,着重为大家介绍下 animation 。
animation 的css属性有很多,本文通过 animation-name 来控制启动动画和转换动画,以下是一个通过 animation 来控制元素的显示和隐藏的例子(仅支持webkit):
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>css3 animation</title> <style> .div{width: 200px; height: 200px; background: #f00; position: absolute; left: 0; -webkit-animation-fill-mode:both; -webkit-animation-duration: 1s; } .div.show{ visibility: visible; -webkit-animation-name: slideIn;} .div.hide{ -webkit-animation-name: slideOut;} html, body{height: 100%; margin:0; padding: 0;} .wrap{width: 960px; position: relative; height: 90%; overflow: hidden; border: 1px solid #000;} .btns{position: absolute; bottom: 20%;} @-webkit-keyframes slideIn{ 0%{left: 1500px;} 50%{left: 100px;} 100%{left: 0;} } @-webkit-keyframes slideOut{ 0%{left: 0;} 50%{left: 100px;} 100%{left: 1500px; visibility: hidden;} } </style> </head> <body> <div class="wrap"> <div id="div" class="div"></div> <div class="btns"> <button onclick="fadeIn()">出现</button> <button onclick="fadeOut()">隐藏</button> </div> </div> <script> function fadeIn(){ div.classList.add(‘show‘), div.classList.remove(‘hide‘); } function fadeOut(){ div.classList.add(‘hide‘), div.classList.remove(‘show‘); } </script> </body> </html>
之所以要用俩动画(slideIn和slideOut),原因是:slideIn动画是把元素滑动进来,这时元素样式已经定为fadeIn动画100%时的样式了,就算把show样式删去也对元素没影响,所以这时要用slideOut动画把元素滑动出去才行。
-webkit-animation-fill-mode:both;
这个样式是为了动画完成后保留动画完成时的状态,如果不加这个样式的话动画完成后又会弹回原来状态了。
我的animation使用方法就介绍到这里了,各位大神有木有更好的实现方法或者建议,欢迎交流下呗~
使用CSS3动画 animation 来控制元素的显示和隐藏,布布扣,bubuko.com
使用CSS3动画 animation 来控制元素的显示和隐藏
原文地址:http://my.oschina.net/luozt/blog/294352