mozilla
您的搜索结果

    transition-timing-function

    概述

    CSS属性受到 transition effect的影响,会产生不断变化的中间值,而 CSS transition-timing-function 属性用来描述这个中间值是怎样计算的。实质上,通过这个函数会建立一条加速度曲线,因此在整个transition变化过程中,变化速度可以不断改变。

    这条加速度曲线被<timing-function>所定义,之后作用到每个CSS属性的过渡. 

    你可以规定多个timing function,通过使用 transition-property属性,可以根据主列表(transition property的列表)给每个CSS属性应用相应的timing function.如果timing function的个数比主列表中数量少,缺少的值被设置为初始值(ease) 。如果timing function比主列表要多,timing function函数列表会被截断至合适的大小。这两种情况下声明的CSS属性都是有效的。

    • 初始值 error:(<s*codes+ids*=s*"initial-transition-timing-function"[^>]*>)</s*codes+ids*=s*"initial-transition-timing-function"[^>
    • Applies to all elements, ::before and ::after pseudo elements
    • 可继承 no
    • Media interactive
    • 计算值 as specified
    • 可动画 no
    • Canonical order the unique non-ambiguous order defined by the formal grammar

    语法

    Formal syntax: <timing-function>#
    
    transition-timing-function: ease
    transition-timing-function: ease-in
    transition-timing-function: ease-out
    transition-timing-function: ease-in-out
    transition-timing-function: linear
    transition-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1)
    transition-timing-function: step-start
    transition-timing-function: step-end
    transition-timing-function: steps(4, end)
    
    transition-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1)
    
    transition-timing-function: inherit
    

    <timing-function>
    通过transition-property中定义被过渡属性,每个 <timing-function>的值代表与这个属性相对应的timing function.

    示例

    transition-timing-function: ease

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: ease-in

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
         -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-in;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-in;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-in;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-in;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: ease-out

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-out;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-out;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-out;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-out;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: ease-in-out

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-in-out;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-in-out;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: ease-in-out;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: ease-in-out;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: linear

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: linear;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: linear;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: linear;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: linear;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: step-start

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: step-start;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: step-start;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: step-start;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: step-start;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: step-end

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: step-end;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: step-end;
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: step-end;
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: step-end;
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    transition-timing-function: steps(4, end)

     <div class="parent">
      <div class="box">Lorem</div>
    </div>
      
    .parent { width: 250px; height:125px;}
    .box {
        width: 100px;
        height: 100px;
        background-color: red;
        font-size: 20px;
        left: 0px;
        top: 0px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: steps(4, end);
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: steps(4, end);
    }
    .box1{
        width: 50px;
        height: 50px;
        background-color: blue;
        color: yellow;
        font-size: 18px;
        left: 150px;
        top:25px;
        position:absolute;
        -webkit-transition-property: width height background-color font-size left top color;
        -webkit-transition-duration:2s;
        -webkit-transition-timing-function: steps(4, end);
        transition-property: width height background-color font-size left top color;
        transition-duration:2s;
        transition-timing-function: steps(4, end);
    }
    
    function updateTransition() {
      var el = document.querySelector("div.box");
       
      if (el) {
        el.className = "box1";
      } else {
        el = document.querySelector("div.box1");
        el.className = "box";
      }
       
      return el;
    }
    
    var intervalID = window.setInterval(updateTransition, 7000);
    

    规范

    Specification Status Comment
    CSS Transitions Working Draft  

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (Yes)-webkit 4.0 (2.0)-moz
    16.0 (16.0)
    10 11.6-o
    12.10 #
    (Yes)-webkit
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (Yes)-webkit (Yes)-webkit 4.0 (2.0)-moz
    16.0 (16.0)
    ? ? (Yes)-webkit

    参考

    文档标签和贡献者

    此页面的贡献者有: jtyjty99999, teoli
    最后编辑者: teoli,