合理选择css3动画实现方式
使用css3实现动画,比js控制DOM属性的方式要高效很多、流畅很多,主要分transition和animation两大方式。
- transition适用于一次性变换
- animation适用于循环动画和多层动画
- 涉及DOM缩放、旋转、移动、旋转时,优先以transform属性实现
- 结合class的add/remove,灵活使用
不管怎么实现,都至少需要设定元素的起始形态和最终形态,形态的变化才能产生动画。
例一:鼠标hover事件就完美契合transition变换。用class的add和remove控制元素变化时,配上transition增加过渡效果,也是种动画方式。
<style>
.btn{
width:100px;
height: 32px;
line-height: 32px;
border-radius: 5px;
border:1px solid #ccc;
text-align: center;
float: left;
margin-left: 80px;
cursor: pointer;
}
.trans{
transition: color .5s, background-color .5s;
-webkit-transition: color .5s, background-color .5s;
}
.btn:hover{
background-color: #fe7124;
color: #fff;
}
</style>
<div class="btn">无过渡</div>
<div class="btn trans">有过渡</div>

例二:animation实现多层动画,以transform:rotate()控制旋转。此处如果同时用translate控制位移,则会与旋转产生叠加,使效果怪异。
<style>
#animated_div {
width: 75px;
height: 42px;
background: #92B901;
color: #ffffff;
position: relative;
font-weight: bold;
font-size: 20px;
padding: 10px;
animation: animated_div 5s 1;
-moz-animation: animated_div 5s 1;
-webkit-animation: animated_div 5s 1;
-o-animation: animated_div 5s 1;
border-radius: 5px;
} @keyframes animated_div {
0% {transform: rotate(0deg); left: 0px;}
25% {transform: rotate(20deg);left: 0px;}
50% {transform: rotate(0deg);left: 500px;}
55% {transform: rotate(0deg);left: 500px;}
70% {transform: rotate(0deg);left: 500px;background: #1ec7e6;}
100% {transform: rotate(-360deg);left: 0px;}
}
</style>
<div id="animated_div">css手册案例</div>

例三:animation-play-state控制animation循环动画。当然也可以将animation放在单独的class类里面,通过add/remove class控制动画的播放与否。
<style>
#myPic{
display: block;
width: 120px;
height: 120px;
border-radius: 50%;
border:3px solid #fff;
box-shadow: 0 0 6px #999;
animation:picRotate 6s linear infinite;
}
@keyframes picRotate{
from {transform: rotate(0deg) }
to {transform: rotate(360deg)}
}
</style>
<img id="myPic" src="lib/img/demo003.jpg">
<button onclick="controlPlay()">控制旋转</button>
<script>
var myPic = document.getElementById("myPic");
function controlPlay() {
var state = myPic.style.animationPlayState;
if(state=="paused"){
myPic.style.animationPlayState = "running"
}else{
myPic.style.animationPlayState = "paused"
}
}
</script>

合理选择css3动画实现方式的更多相关文章
- CSS3 动画实现方法大全
常用效果总结(需要引用animate.css) <!doctype html> <html lang="en"> <head> <meta ...
- 使用jquery封装的动画脚本(无动画、css3动画、js动画)
自己封装好的showhide.js 包含无动画.css3动画.js动画 包括:fade(淡入淡出) slideUpDown(上下滑动) slideLeftRight(左右滑动) fadeSlid ...
- css3动画大全
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 用CSS3动画特效实现弹窗效果
提示:如果大家觉得本篇实现的弹窗效果有用,可持续关注.接下会添加更多效果并且封装成插件,这样使用就方便了.效果查看: https://heavis.github.io/hidialog/index.h ...
- Bounce.js – 快速创建漂亮的 CSS3 动画效果
Bounce.js 是一个用于制作漂亮的 CSS3 关键帧动画的 JavaScript 库,使用其特有的方式生成的动画效果.只需添加一个组件,选择预设,然后你就可以得到一个短网址或者导出为 CSS 代 ...
- 【转】CSS3动画帧数科学计算法
本文来源于:财付通TID 原作者:bboy90 总结都浓缩在这个工具里了,想知道工具的地址或想窥探工具诞生的趣事请往下看 . —————————————————————– 华丽丽的开篇 ...
- CSS3 动画基础
该文为译文转载,原文地址:http://tech.163.com/mobile/10/0106/09/5SB96QSM00112K88.html 译文:你需要知道的CSS3 动画技术 原文:Wha ...
- demo: 全页面CSS3动画的一个参考例子
全页面CSS3动画的一个参考例子: http://wow.blizzard.cn/wow/wod-achievement/ 魔兽的一个活动页 第二页.第三页,文字进入页面 <script src ...
- CSS3 动画卡顿性能优化解决方案--摘抄
最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...
随机推荐
- Android 开发工具类 24_getHtml
获取网页(JSP)源码 import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; impo ...
- Linux -- 使用笔记
Linux新增分辨率1920x1080 sudo gedit /etc/default/grub 找到:#GRUB_GFXMODE=640x480 在这行下面加一行GRUB_GFXMODE=1920x ...
- Vue图片懒加载之lazyload插件使用
当内容没有加载完的时候,用户体验不是很好,这时候,可以使用lazyload这个插件,提升用户体验,使用方法特别简单易用 一. vue lazyload插件: 插件地址:https://github.c ...
- 数据序列化导读(1)[JSON]
所谓数据序列化(Data Serialization), 就是将某个对象的状态信息转换为可以存储或传输的形式的过程. 那么,为什么要进行序列化? 首先,为了方便数据存储: 其次,为了方便数据传递. 在 ...
- C语言中判断字符串str1是否以str2开始或结束
#include <stdlib.h> #include <string.h> #include <stdio.h> /**判断str1是否以str2开头 * 如果 ...
- redis集群与分片(2)-Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- spring boot 2.0 源码分析(四)
在上一章的源码分析里,我们知道了spring boot 2.0中的环境是如何区分普通环境和web环境的,以及如何准备运行时环境和应用上下文的,今天我们继续分析一下run函数接下来又做了那些事情.先把r ...
- 【LeetCode题解】206_反转链表(Reverse-Linked-List)
目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以访问我的 git ...
- MCS锁和CLH锁
CLH锁:自旋锁,在上一个节点上等待,先上代码: public class CLHLock { /** * 保证原子性操作 * */ private AtomicReference<Node&g ...
- Spring Aop之@Before、@After、@Around、@AfterReturning
在项目中使用到了@Aspect注解,故研究了下与其配套的几个注解,将测试结果记录下来 import org.aspectj.lang.JoinPoint; import org.aspectj.lan ...