<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      綠島之北

      好讀書,不求甚解;每有會(huì)意,便記下筆記。

      導(dǎo)航

      【翻譯】我如何使用CSS來制作bitsofcode Logo動(dòng)畫

      翻譯文章,翻譯不好,還望大家指出

      原文地址:How I Animated the bitsofcode Logo with CSS

      我是css動(dòng)畫的新手,這樣說是因?yàn)槲抑辉谟邢薜陌咐惺褂眠^他們,而且大多時(shí)候通過使用第三方動(dòng)畫庫來完成,例如Daniel Eden寫的Animate.css

      正如我在重新設(shè)計(jì)bitsofcode中提到的,我與新的bitsofcode logo的圖形設(shè)計(jì)師一起創(chuàng)建了這個(gè)動(dòng)畫。

      我知道我肯定會(huì)在一些地方用到它,所以我決定嘗試重新創(chuàng)建動(dòng)畫的一部分作為純CSS動(dòng)畫。

      CSS動(dòng)畫介紹

      在介紹如何創(chuàng)建logo動(dòng)畫之前,對CSS動(dòng)畫如何工作的做點(diǎn)介紹有有幫助的。CSS動(dòng)畫讓我們創(chuàng)建自定義的、應(yīng)用在元素上的復(fù)雜動(dòng)畫稱為可能,而這不需要額外的工具或語言比如JavaScript。這有很多的好處,比如使用上更加簡單、比其他方式有更好的性能。

      創(chuàng)建動(dòng)畫

      為了創(chuàng)建CSS動(dòng)畫,我們要使用@keyframes規(guī)則,通過該規(guī)則來定義動(dòng)畫名稱以及應(yīng)用在動(dòng)畫元素上的每一步的CSS樣式。例如,下面的動(dòng)畫,命名為grow,將會(huì)縮放一個(gè)元素到它的尺寸的兩倍。

      @keyframes grow {
          0% {
              transform: none;
          }
          100% {
              transform: scale(2);
          }
      }
      

      當(dāng)創(chuàng)建自定義動(dòng)畫的時(shí)候,動(dòng)畫名稱定義帶@keyframes關(guān)鍵字后面,并且動(dòng)畫的步驟定義在塊{}中。動(dòng)畫中的步驟可以被認(rèn)為是一個(gè)時(shí)間軸,從0開始,標(biāo)志動(dòng)畫的開始,到底100,標(biāo)志動(dòng)畫的結(jié)束。

      Timeline

      除了時(shí)間軸上的這兩個(gè)點(diǎn)意外,在這之間還可以有許多類似的步驟。例如,調(diào)整grow動(dòng)畫從成長變成一個(gè)脈搏動(dòng)畫。現(xiàn)在我們不是簡單的讓元素?cái)U(kuò)大,同樣,我們也要讓它回到原始尺寸。

      @keyframes pulse {
          0% {
              transform: none;
          }
          50% {
              transform: scale(2);
          }
          100% {
              transform: none;
          }
      }
      

      在時(shí)間軸上的一個(gè)點(diǎn)可以有多條規(guī)則,就像給一個(gè)選擇器應(yīng)用樣式。

      @keyframes pulseAndChangeColour {
          0% {
              transform: none;
              background-color: red;
          }
          25% {
              background-color: blue;
          }
          50% {
              transform: scale(2);
              background-color: green;
          }
          75% {
              background-color: pink;
          }
          100% {
              transform: none;
              background-color: orange;
          }
      }
      

      使用動(dòng)畫

      一旦我們創(chuàng)建好了動(dòng)畫,我們就可以把它用到任何含有animation屬性的元素上了。關(guān)于CSS動(dòng)畫animation,這里有九條相關(guān)規(guī)則。

      Property Description
      animation-name 定義動(dòng)畫名稱,在@keyframes中定義
      animation-delay 定義在動(dòng)畫開始前的延遲時(shí)間
      animation-duration 定義動(dòng)畫一個(gè)周期內(nèi)需要的時(shí)間
      animation-iteration-count 定義動(dòng)畫在播放的次數(shù)
      animation-direction 定義在時(shí)間軸上朝哪個(gè)方向運(yùn)行
      animation-play-state 決定動(dòng)畫是運(yùn)行還是暫停 "paused" or "running"
      animation-timing-function 定義動(dòng)畫在每個(gè)步驟如何過渡
      animation-fill-mode 動(dòng)畫在播放前或后,動(dòng)畫效果是否可見
      animation 以上所有屬性的縮寫

      例如,我們可以應(yīng)用pulseAndChangeColour動(dòng)畫3秒、無限循環(huán)、支持動(dòng)畫反向運(yùn)行、播放前有2秒的延遲時(shí)間,這些聲明如下:

      .animated-element {
          animation-name: pulseAndChangeColour;
          animation-duration: 3s;
          animation-iteration-count: infinite;
          animation-direction: alternate;
          animation-delay: 2s;
      }
      

      兼容性

      在我的CSS動(dòng)畫中,我決定重新創(chuàng)建之前創(chuàng)建的一部分,以下是我需要?jiǎng)?chuàng)建的部分:

      預(yù)備SVG元素

      正如你想象,該logo是一個(gè)SVG元素。每一個(gè)字符(除了字母'o',取一半)都是一個(gè)獨(dú)立的<path>。這可以讓我瞄準(zhǔn)每一個(gè)獨(dú)立的字母或者瞄準(zhǔn)具體的一組字符。

      基于動(dòng)畫,有三個(gè)可以看到的字幕組,我使用三個(gè)類組合起來:

      • .logo-section—left: 字母組 "bitso" (with the opening o,就像()
      • .logo-section—middle: 字母組 "ofco" (with the closing o and opening o,就像)()
      • .logo-section—right: 字母組 "ode" (with the closing o,就像))

      對上述的每一個(gè)組都對應(yīng)一個(gè)單獨(dú)的@keyframes規(guī)則,因?yàn)樗鼈冎械膭?dòng)畫略微不同。

      創(chuàng)建時(shí)間軸

      正如我提到的,每一個(gè)CSS動(dòng)畫都有一個(gè)時(shí)間事件軸,從0%到100%。因?yàn)檫@個(gè)動(dòng)畫要比脈動(dòng)動(dòng)畫復(fù)雜,所以這里我特地在寫CSS之前寫出時(shí)間軸,這很有用。

      讓我們先對logo左邊的部分進(jìn)行動(dòng)畫,一下是基本的步驟:

      • 向左移動(dòng)
      • 回到中間
      • 停留在中間(等待右邊部分向右移動(dòng))
      • 向左移動(dòng)
      • 旋轉(zhuǎn)
      • 慢慢增加旋轉(zhuǎn)
      • 回到?jīng)]有旋轉(zhuǎn)的位置
      • 回到中間

      接下來,我將采取這些步驟并把這些步驟對應(yīng)到時(shí)間軸上,從0到100%,每一步都要標(biāo)記上。

      Timeline

      這可以被翻譯成真正的CSS動(dòng)畫時(shí)間軸:

      @keyframes logoSectionLeft {
        0% {
          /* Initial Position */
        }
      
        12.5% {
          /* 1. Move Left */
        }
      
        25% {
          /* 2. Return to middle */
        }
      
        50% {
          /* 3. Stay in middle (while waiting for the right section to move right) */
        }
      
        62.5% {
          /* 4. Move left */
        }
      
        67%,
        72% {
          /* 5. Rotate */
        }
      
        82% {
          /* 6. Slowly increase rotation */
        }
      
        87.5% {
          /* 7. Return to unrotated position */
        }
      
        100% {
          /* 8. Return to middle */
        }
      }
      

      對每一步都寫樣式

      一旦時(shí)間軸被規(guī)劃出來,我就可以對每一步增加CSS樣式了。對于這個(gè)動(dòng)畫,我使用的唯一屬性是具有translate()rotate()函數(shù)的transform屬性。

      這是左邊部分完整的動(dòng)畫幀:

      @keyframes logoSectionLeft {
        0% {
          /* 初始位置 */
          transform: none;
        }
      
        12.5% {
          /* 1. 向左移動(dòng) */
          transform: translateX(-15px);
        }
      
        25%,
        50% {
          /* 2. 回到中間 */
          /* 3. 停留在中間 等待右邊部分向右移動(dòng)) */
          transform: none;
        }
      
        62.5% {
          /* 4. 向左移動(dòng) */
          transform: translateX(-15px);
        }
      
        67%,
        72% {
          /* 5. 旋轉(zhuǎn) */
          transform: translateX(-15px) rotate(-10deg);
        }
      
        82% {
          /* 6. 緩慢增加旋轉(zhuǎn) */
          transform: translateX(-15px) rotate(-15deg);
        }
      
        87.5% {
          /* 7. 回到?jīng)]有旋轉(zhuǎn)的位置 */
          transform: translateX(-15px);
        }
      
        100% {
          /* 7. 回到中間 */
          transform: none;
        }
      }
      

      應(yīng)用動(dòng)畫

      最后,我想要當(dāng)logo被focushover的時(shí)候才應(yīng)用動(dòng)畫。并且運(yùn)行3秒、無限循環(huán)運(yùn)行。

      .site__title a:hover .logo-section-left,
      .site__title a:focus .logo-section-left {
          animation-name: logoSectionLeft;
          animation-duration: 3s;
          animation-timing-function: ease-in-out;
          animation-iteration-count: infinite;
      }
      

      就到這吧,我把動(dòng)畫放到了CodePen,你可以進(jìn)行體驗(yàn)。

      posted on 2017-05-13 13:31  綠島之北  閱讀(447)  評論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 国产成人精品国产成人亚洲 | 中文字幕国产精品综合| 久久精品国产亚洲av麻豆小说| 国产一区二区精品自拍| 亚洲一区二区精品偷拍| 亚洲精品尤物av在线网站| 欧美亚洲另类制服卡通动漫| 婷婷五月综合激情| 精品国产高清中文字幕| 欧美寡妇xxxx黑人猛交| 国产精品无码素人福利不卡| 亚洲中文字幕精品久久久久久动漫| 人妻少妇无码精品专区| 国产成人一区二区三区视频免费 | a片免费视频在线观看| 久久人人97超碰精品| 日本高清不卡一区二区三| 一二三三免费观看视频| 九九久久自然熟的香蕉图片| 日韩人妻不卡一区二区三区| 欧美成人h精品网站| 最新亚洲人成网站在线观看| 亚洲熟妇熟女久久精品一区| 一本色道国产在线观看二区| 在线看av一区二区三区| 精品国产一区二区亚洲人| 亚洲av无码牛牛影视在线二区| 中文字幕乱偷无码av先锋蜜桃| 精品日本乱一区二区三区| 国产成人小视频| 国产成人一卡2卡3卡四卡视频| 制服丝袜美腿一区二区| 亚洲综合网国产精品一区| 亚洲天堂成人黄色在线播放| 国产不卡一区二区在线| 新营市| 欧美精品黑人粗大破除| 99RE8这里有精品热视频| 阿拉善左旗| 欧美亚洲h在线一区二区| 一区一区三区产品乱码|