天天看點

過渡和動畫的基本介紹過渡初始

過渡和動畫的基本介紹

  • 過渡初始
    • 過渡的四大要素
    • 過渡的簡寫方式
    • 動畫的建立
    • 動畫的七大要素
    • 動畫的播放和暫停
    • 過渡和動畫的差別

過渡初始

過渡:元素從一種樣式變換為另一種樣式時為元素添加效果

過渡不同于動畫,他不會無緣無故的發生,過渡必須要觸發一個事件才能實作效果,滑鼠在hover狀态下相當于一個移入事件

過渡的四大要素

1、要控制的css屬性名,預設值:all,不是必需

2、完成過渡需要的時間,s,ms 1000ms=1s 必須要有

3、過渡的速度曲線,不是必需,ease預設值

ease 變速,規定慢速開始,然後變快,然後慢速結束的過渡效果

linear 勻速,規定以相同速度開始至結束的過渡效果

ease-in 規定以慢速開始的過渡效果

ease-out 規定以慢速結束的過渡效果

ease-in-out 規定以慢速開始和結束的過渡效果

cubic-bezier(n,n,n,n) 在cubic-bezier函數中定義自己的值可能的值是0至1之間的數值

4、過渡延遲時間,s,ms

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過渡的四大要素</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: red;
            margin: 100px auto;
            /*多個屬性可以逗号隔開*/
            /*要控制的css屬性名*/
            transition-property:width,background,height ;
            /*完成過渡需要的時間*/
            transition-duration: 2s,3s,5s;
            /*過渡的速度曲線*/
            /*transition-timing-function: linear;*/
            transition-timing-function: linear,linear,ease;
            /*過渡延遲時間,s,ms*/
            transition-delay: 500ms,300ms,500ms;
        }
        .box:hover{
            background: blue;
            width: 500px;
            height: 300px;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
           

過渡的簡寫方式

  1. 所有要控制的樣式使用相同的過渡方式
  • 屬性值依次:all 完成過渡的時間 速度曲線 延遲開始時間
  • 如果使用變速,速度曲線也可以不寫
  • 如果延遲開始時間沒有,也可以不寫
  1. 要控制的樣式使用不同的過度方法
  • 對要控制的css屬性分組,每一組可以書寫不同的過渡方式,組與組之間用逗号隔開
  • 每一組書寫方法:要控制的css屬性名 完成過渡的時間 速度曲線 延遲開始時間
  • 如果哪一組的值使用預設值,也可以不寫
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>過渡的簡寫方式</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: red;
            margin: 100px auto;
            /*transition: all 2s linear 1s;*/
            /*transition: 2s linear 1s;*/
            /*transition: 2s;*/
            transition: width 2s 1s,height 3s,background 4s linear 1s;
        }
        .box:hover{
            background: blue;
            width: 500px;
            height: 300px;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
           

動畫的建立

動畫,通過改變元素的樣式給元素添加動畫

動畫的建立有兩種方式:

  1. from-to :from{}代表動畫開始;to{}代表動畫結束
  2. 百分比建立動畫(推薦使用):0%{};代表動畫開始,後面可以設定多個關鍵幀,如:50%{};80%{}……,100%{};代表動畫結束。
  3. @keyframes用于建立一個動畫,動畫名稱自己設定
  4. 文法:animation:要綁定的動畫名稱 動畫完成的時間 速度曲線 延遲開始時間 播放次數 輪流反向播放 保持最後狀态
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>動畫初始</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: red;
            margin: 100px auto;
            /*animation: name 10s linear 3s;*/
            /*文法*/
            /*    animation:要綁定的動畫名稱 動畫完成的時間 速度曲線 延遲開始時間 播放次數 輪流反向播放 保持最後狀态*/
            
            /*  延遲開始時間: s,ms*/
            /*  播放次數:預設值為1次,infinite無限次播放*/
            /*animation: name 5s 2;*/
            /*animation: name 2s infinite;*/

            /*輪流反向播放:預設值normal,輪流反向播放alternate,必須要有播放次數*/
                /*animation: name 5s 2 alternate;*/

            /*保持最後的狀态:forwards*/
                animation: name 5s forwards;
        }
        /*@keyframes用于建立一個動畫,動畫名稱自己設定*/
        @keyframes name {
            /*!*動畫開始*!*/
            /*from{width: 100px;height: 100px;background: red;}*/
            /*!*動畫結束*!*/
            /*to{width: 500px;height: 500px;background: blue;}*/

            /*百分比指的是動畫完成時的百分比*/
            0%{width: 100px;height: 100px;background: red;}
            30%{width: 200px;height: 300px;background: green;}
            50%{width: 200px;height: 300px;background: green;}
            80%{width: 200px;height: 300px;background: yellow;}
            100%{width: 500px;height: 500px;background: blue;}
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
           

動畫的七大要素

1.要綁定的動畫名稱:必須要有

2. 動畫完成的時間:必須要有 s,ms

3. 速度曲線,預設ease變速,凡是隻要過渡能用的動畫都能用

4. 延遲開始時間: s,ms

5. 播放次數:預設值為1次,infinite無限次播放

6. 輪流反向播放:預設值normal,輪流反向播放alternate,必須要有播放次數

7. 保持最後的狀态:forwards

動畫的播放和暫停

animation-play-state規定動畫播放(running)還是暫停(paused)

動畫的暫停:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>動畫的暫停</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: red;
            margin: 100px auto;
            animation: name 10s;
        }
        .box:hover{
            animation-play-state: paused;
        }
        /*@keyframes用于建立一個動畫,動畫名稱自己設定*/
        @keyframes name {
            0%{width: 100px;height: 100px;background: red;}
            100%{width: 500px;height: 500px;background: blue;}
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
           

動畫的播放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>動畫的播放</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: red;
            margin: 100px auto;
            animation: name 10s;
            animation-play-state: paused;
        .box:hover{
            animation-play-state: running;
        }
        /*@keyframes用于建立一個動畫,動畫名稱自己設定*/
        @keyframes name {
            0%{width: 100px;height: 100px;background: red;}
            100%{width: 500px;height: 500px;background: blue;}
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>
           

過渡和動畫的差別

1.過渡需要事件觸發,動畫不需要事件觸發

2.過渡隻有開始-結束,動畫可以設定多個關鍵幀