关于CSS动画几点要注意的地方

js操作transition无效果

先看这个demo以及stackoverflow的问题

http://jsfiddle.net/ThinkingStiff/QNnnQ/

http://stackoverflow.com/q/8210560/918414

怪异的是这个demo在本地chrome上第一个fade-in 不能执行, 所以不明白为什么jsfiddle上是Ok的...

如果你想用js 去操作css的transition 它必须放在异步的函数里面

不论是操作class名还是直接在style里面写属性 都是如此

你可以将这些操作放在事件处理函数中,或者setTimeout中

    // box.style.cssText('transition: 200ms; margin-left: 50%');//这样不行  非要放在异步函数中//比如setimeout  事件回调函数等
// box.classList.add('trans');//也不行
// box.classList.add('changeColor');//Ok animation则不受影响 setTimeout(function() {
// box.style.transitionProperty = 'all';
// box.style.transitionDuration = '1s';
// box.style.left = '50px';
// box.style.top = '50px';
// 或者更简单些
box.style.cssText = 'transition: 500ms; left: 50px;';//ok
// box.classList.add('trans2');//ok
}, 0);
box.addEventListener('transitionend', function() {
console.log('end');//如果transition里面有2个属性 那么这个时间会触发两次
}, false);
    #box {
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
background: #0F0;
opacity: 0.5;
} #box.trans {
opacity: 1;
transition: opacity 2s;
-moz-transition: opacity 2s;
-ms-transition: opacity 2s;
-o-transition: opacity 2s;
-webkit-transition: opacity 2s;
}
#box.trans1{
left: 50px;
top:50px;
transition: all 2s;
-moz-transition: all 2s;
-ms-transition: all 2s;
-o-transition: all 2s;
-webkit-transition: all 2s;
}
/*OR 更细致一点*/
#box.trans2{
left: 50px;
top:50px;
transition: left 2s, top 2s;
-moz-transition: left 2s, top 2s;
-ms-transition: left 2s, top 2s;
-o-transition: left 2s, top 2s;
-webkit-transition: left 2s, top 2s;
} @-webkit-keyframes changeColor {
0% {
background: #206a11;
}
50% {
background: #012c1a;
}
100% {
background: #206a9e;
}
} .changeColor {
-webkit-animation: changeColor 3.4s infinite;
}

暂停一个动画

对于animation来说很好处理

element.style.webkitAnimationPlayState = "paused";
element.style.webkitAnimationPlayState = "running";

More

http://tutorialspark.com/css3/CSS3_Animation_Pause_Resume_Demo.php

可惜只能用在animation上 对于transition的停止就不能使用这样的属性了

搬运

https://css-tricks.com/controlling-css-animations-transitions-javascript/

可以再想要停止的时刻 去除transition这个属性就行 不论是改cssText 还是操作className都可以

var boxOne = document.getElementsByClassName('box')[0],
$boxTwo = $('.box:eq(1)'); document.getElementsByClassName('toggleButton')[0].onclick = function() {
if(this.innerHTML === 'Play')
{
this.innerHTML = 'Pause';
boxOne.style.cssText = 'transition: 2s; margin-left: 50%';
// 向style中填css 添加class名字都是可以的
// boxOne.classList.add('horizTranslate');
} else {
this.innerHTML = 'Play';
var computedStyle = window.getComputedStyle(boxOne),
marginLeft = computedStyle.getPropertyValue('margin-left');
// boxOne.style.marginLeft = marginLeft;
// boxOne.classList.remove('horizTranslate');
boxOne.style.cssText = 'margin-left:' + marginLeft;
// boxOne.style.animationPlayState = "paused";//只能停下animation transition是不能停的
}
}

关于CSS动画几点要注意的地方的更多相关文章

  1. 梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画

    CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能. 一.两者的主要区别 先开门见山的说说两者之间的区别. 1)CSS动画: 基于CSS的动 ...

  2. Css 动画的回调

    在做项目中经常会遇到使用动画的情况.以前的情况是用js写动画,利用setTimeout函数或者window.requestAnimationFrame()实现目标元素的动画效果.虽然后者解决了刷新频率 ...

  3. 【译】css动画里的steps()用法详解

    原文地址:http://designmodo.com/steps-c... 原文作者:Joni Trythall 我想你在css 动画里使用steps()会和我一样有很多困惑.一开始我不清楚怎样使用它 ...

  4. css动画属性性能

    性能主要表现:流量.功耗与流畅度 在现有的前端动画体系中,通常有两种模式:JS动画与CSS3动画. JS动画是通过JS动态改写样式实现动画能力的一种方案,在PC端兼容低端浏览器中不失为一种推荐方案. ...

  5. Css动画形式弹出遮罩层,内容区上下左右居中于不定宽高的容器中

    <!DOCTYPE html> <html> <head> </head> <body id="body"> <! ...

  6. css动画与js动画的区别

    CSS动画 优点: (1)浏览器可以对动画进行优化.   1. 浏览器使用与 requestAnimationFrame 类似的机制,requestAnimationFrame比起setTimeout ...

  7. CSS动画与GPU

    写在前面 满世界的动画性能优化技巧,例如: 只允许改变transform.opacity,其它属性不要动,避免重新计算布局(reflow) 对动画元素应用transform: translate3d( ...

  8. 15个来自 CodePen 的酷炫 CSS 动画效果【下篇】

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

  9. 赞!15个来自 CodePen 的酷炫 CSS 动画效果

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

随机推荐

  1. SqlServer查询数据库所有表

    //SqlServer查询数据库所有表SELECT * FROM SYSOBJECTS WHERE TYPE='U' and name like '%dict%'

  2. Django Url编码问题

    Django Url编码问题   最近在学习Django,写一个blog程序练练手手.对于一个才开始接触web开发的来说,难免会遇到一些问题.   有一个这样的模板: {%for k,v in cat ...

  3. Intellij IDEA+Maven+SpringMVC+HiBernate

    转载请注明出处:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生). 访问GitHub下载最新源码:https://github.com/gaussic/SpringMVCDemo

  4. C语言队列的实现

    队列是常用的数据结构之一,下面给出一个链式队列的实现: 头文件Queue.h #ifndef Queue_H #define Queue_H typedef int Item; typedef str ...

  5. Android 监听器

    Android提供很多种事件监听器,监听器主要是为了相应某个动作,可以通过监控这种动作行为,来完成我们需要的程序功能.      OnItemClickListener:               ...

  6. 软件测试学习日志———— round 2 Junit+intellj idea 安装及简单的测试使用

    今天是软件测试的上机,主要内容是对junit的安装以及对一个简单类的测试实践.老师推荐用eclipse,但是我原来一直在 用intellj Idea,所以我试了试intellj Idea对junit的 ...

  7. 4.java.lang.NumberFormatException(数据类型转换异常)

    字符串转换为数字异常 当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的. 但是如果字符 ...

  8. android开源框架和开源项目(转)

    特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.c ...

  9. Ring3下干净的强行删除文件

    在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除. ...

  10. poj 3323 Matrix Power Series (矩阵乘法 非递归形式)

    为了搞自动机+矩阵的题目,特来学习矩阵快速幂..........非递归形式的求Sum(A+A^2+...+A^k)不是很懂,继续弄懂................不过代码简洁明了很多,亮神很给力 # ...