关于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. Caused by: java.lang.UnsupportedClassVersionError: com/zy/example/domain/Student : Unsupported major.minor version 51.0

    JVM的版本比jdk的版本老,即JVM的版本低于jdk的版本.换个新版本的就可以解决问题.

  2. JDBC连接数据库及增删改查操作

    什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...

  3. Mac浏览器全屏设置

    在 mac 升级之后,以往点击放大的按钮,现在显示的效果是全屏:

  4. SQL 语句中按照in语句原有的顺序进行排序

    Access: ,,) order by instr(',1,5,3,',','&;id&;',') MSSQL: ,,) )))+',',',1,5,3,') MySQL: ,,) ...

  5. log4j异常问题

    log4j:WARN No appenders could be found for logger   转自:最爱NBA 直接写我的解决办法:在src下面新建file名为log4j.propertie ...

  6. VBA基础——循环语句

    VBA基础之循环语句 Sub s1() Dim rg As Range For Each rg In Range("a1:b7,d5:e9") If rg = "&quo ...

  7. “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)

    解决方案: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载) 遇到的问题: 在.h头文件中采用namespace 命名空间报错 test.h namespace LMR ...

  8. CSS层

    在使用元素定位时,从可视角度讲,不可避免地会发生两个元素试图同时出现于同一位置的情况.显示其中一个就会覆盖另外一个. 如果将网页的二维空间延伸到三维空间,就会解决上述元素覆盖问题. 在坐标系中,通过增 ...

  9. php 输出带变量字符串

    (一) <?php $a=50;echo "Hello World 我有"."$a"."元";?> 看此例子,变量a的输出,在p ...

  10. 用OxyPlot在WPF中演示正演磁异常的变化规律

    为了在展示实验成果时动态演示理论球体磁异常随其埋深.磁化倾角的变化规律,我用WPF写了一个小程序来作演示. MatLab计算磁异常数据 首先是计算理论球体磁异常数据,在Matlab中可以很方便地计算. ...