zoukankan      html  css  js  c++  java
  • 弄清 CSS3 的 transition 和 animation

    弄清 CSS3 的 transition 和 animation

    transition

    transition 属性是
    transition-property,
    transition-duration,
    transition-timing-function,
    transition-delay
    的简称,用于设定一个元素的两个状态,不同的状态可以用伪类,比如:hover, :active 或者是通过 javascript 动态设定。IE10+支持。

    所以 transition 的初始值为:

    transition-delay: 0s;
    transition-duration: 0s;
    transition-property: all;
    transition-timing-function: ease;
    

    用法

    div {
      transition: <property> <duration>    <timing-function> <delay>;
    }
    

    并且有事件可以监测 transition 结束

    el.addEventListener("transitionend",updateTransition,true);
    
    //in webkit
    el.addEventListener("webkitTransitionEnd",updateTransition,true);
    

    实例

    HTML

    <!--  DEMO 1: Fade Block -->
    <div id="fade">
         move here  !
    </div>
    
    
    <div id="nudge">
        mouse on me 
    </div>
    
    
    <div id="bounce">Place mouse on  me i will bounce!</div>
    
    
    <div id="spin">Place mouse on  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i won  me i will spin</div>
    
    
    <div id="accordion" class="accordion">
        <a href="#first">This is first tab</a>
        <div id="first"><p>Lorem ipsum </p> </div>
    
        <a href="#second">This is second tab</a>
        <div id="second"><p>Lorem ipsum </p> </div>
    	
        <a href="#third">This is third tab</a>
        <div id="third"><p>Lorem ipsum </p> </div>
    </div>
    

    CSS

    /*
    DEMO 1: Fade Block
    */
    div {
        margin-bottom: 50px;
    }
    
    
    #fade {
        /*opacity:1;
        -webkit-transition: opacity 10s liner 10s;*/
      position: relative;
      transition-property: font-size;
      transition-duration: 0.5s;
      transition-delay: 0;
      font-size: 14px;
    }
    
    #fade:hover {
      font-size: 36px;
    }
    
    
    /* DEMO2 */
    #nudge{
        
        -webkit-transition-property: color,
            background-color,padding-left;
        -webkit-transition-duration: 500ms,500ms, 500ms;
    }
    
    #nudge:hover{
        background-color: #efefef;
        color: #333;
        padding-left: 50px;
    }
    
    
    
    
    #bounce:hover {
        -webkit-animation-name:bounce;
        -webkit-animation-duration:1s;
        -webkit-animation-iteration-count:2;
        -webkit-animation-direction:alternate
    }
    @-webkit-keyframes bounce {
        from{margin-left:0;}
        to{margin-left:250px;}
    }
    
    
    
    
    #spin{
        -webkit-transition: -webkit-transform 10s ease-in;
    }
    
    #spin:hover{
        -webkit-transform: rotate(36000deg);
    }
    
    
    
    .accordion a{
        display: block;
        padding:5px 10px;
        background-color:#ccc;
        color:#000;
        
        /*可以去掉链接的下划线等修饰效果*/
        text-decoration:none;
        
    }
    .accordion a:hover{
        background-color:#999;
    }
    .accordion div{
        background-color:#cda;
        color:#222;
    }
    .accordion div p{
        padding:20px
    }
     
    #accordion div{
        /*先隐藏起来*/
        height:0;
        overflow:hidden;
        
        -webkit-transition:height 600ms ease;
    }
    
    #accordion div:target{
        height:110px;
    }
    

    animation

    animation 属性是如下这些属性的简写
    animation-name: none
    animation-duration: 0s
    animation-timing-function: ease
    animation-delay: 0s
    animation-iteration-count: 1
    animation-direction: normal
    animation-fill-mode: none

    用法

    animation:
    	animation-name
        time(duration)
        timing-function
        time(delay)
        animation-iteration-count( 结束之前的循环次数)
        single-animation-direction 
        /*{
        	animation-direction: normal (每次从正方向开始)
    		animation-direction: reverse (每次从反方向开始)
    		animation-direction: alternate (正反往复)
        }*/
        single-animation-fill-mode
    

    实例

    <div class="view_port">
       <div class="polling_message">
            Listener for dispatches     
       </div>
       <div class="cylon_eye">
       </div>
    </div>
    
    .polling_message {
        color: white;
        float: left;
        margin-right:2%;
    }
    .view_port {
        background-color: black;
        height: 50px;
         100%;
        overflow: hidden;
    }
    .cylon_eye {
        color: white;
        height: 100%;
         80%;
        background-color: red;
        
        background-image: linear-gradient(to right, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0.9) 75%);
        
        -webkit-animation: move_eye 4s linear 0s infinite alternate;
           -moz-animation: move_eye 4s linear 0s infinite alternate;
             -o-animation: move_eye 4s linear 0s infinite alternate;
                animation: move_eye 4s linear 0s infinite alternate;
    }
    @-webkit-keyframes move_eye {
        from {
            margin-left:-20%;
        }
        to {
            margin-left:100%;
        }
    }
    @-moz-keyframes move_eye {
        from {
            margin-left:-20%;
        }
        to {
            margin-left:100%;
        }
    }
    @-o-keyframes move_eye {
        from {
            margin-left:-20%;
        }
        to {
            margin-left:100%;
        }
    }
    @keyframes move_eye {
        from {
            margin-left:-20%;
        }
        to {
            margin-left:100%;
        }
    }
    
  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/yakun/p/3902820.html
Copyright © 2011-2022 走看看