zoukankan      html  css  js  c++  java
  • 关于CSS动画几点要注意的地方

    关于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;
             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是不能停的
      }
    }
    
  • 相关阅读:
    Objective
    Objective
    安排
    ios 类的内部结构
    什么是静态语言,什么是动态语言?
    ios 中的 GCD
    IOS 中的JS
    菱形开合的实现 IOS
    典题
    c++连接数据库 在vc6.0
  • 原文地址:https://www.cnblogs.com/cart55free99/p/4817864.html
Copyright © 2011-2022 走看看