溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS3怎么實現(xiàn)動畫按鈕效果

發(fā)布時間:2021-08-10 16:57:01 來源:億速云 閱讀:146 作者:chen 欄目:web開發(fā)

這篇文章主要介紹“CSS3怎么實現(xiàn)動畫按鈕效果”,在日常操作中,相信很多人在CSS3怎么實現(xiàn)動畫按鈕效果問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CSS3怎么實現(xiàn)動畫按鈕效果”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在線演示地址:http://jsfiddle.net/lhb25/9EcuV/8/embedded/result/

HTML 部分非常簡單,五種效果對應的class為:praticle、cells、jelly、blobbs、chase,代碼如下:

<section>     <div class="particle"></div>     <div class="cells"></div>     <div class="jelly"></div>     <div class="blobbs"></div>     <div class="chase"></div> </section>

這些精美的效果用到了 CSS3 border-radius(圓角)、box-shadow(陰影)、transition(變形)、transform(轉換)和 animation(動畫)等特性,公共部分的完整代碼如下:

section > div {      display: inline-block;      position: relative;      width: 200px;      height: 200px;      margin: 0px auto;      border-radius: 50%;      border: 10px solid hsla(0,0%,0%,.7);      box-shadow: inset 0 15px 15px -5px hsla(0,0%,100%,.7),                  inset 0 -5px 10px 3px hsla(0,0%,0%,.6),                   0 8px 10px 2px hsla(0,0%,0%,.3);                 background-position: center;             -webkit-transform: scale3d(.66,.66,1);         -moz-transform:   scale(.66);          -ms-transform:   scale(.66);           -o-transform:   scale(.66);              transform:   scale(.66);             -webkit-transition: -webkit-transform .5s cubic-bezier(.32,0,.15,1);         -moz-transition:    -moz-transform .5s cubic-bezier(.32,0,.15,1);          -ms-transition:     -ms-transform .5s cubic-bezier(.32,0,.15,1);           -o-transition:      -o-transform .5s cubic-bezier(.32,0,.15,1);              transition:         transform .5s cubic-bezier(.32,0,.15,1);  }     section > div:hover {      cursor: none;      -webkit-transform: scale3d(1,1,1);         -moz-transform:   scale(1);          -ms-transform:   scale(1);           -o-transform:   scale(1);              transform:   scale(1);         -webkit-transition: -webkit-transform .2s cubic-bezier(.32,0,.15,1);         -moz-transition:    -moz-transform .2s cubic-bezier(.32,0,.15,1);          -ms-transition:     -ms-transform .2s cubic-bezier(.32,0,.15,1);           -o-transition:      -o-transform .2s cubic-bezier(.32,0,.15,1);              transition:         transform .2s cubic-bezier(.32,0,.15,1);  }

這段代碼看起來很長很復雜,其實大部分是兼容性代碼,精簡以后的代碼如下:

section > div {      display: inline-block;      position: relative;      width: 200px;      height: 200px;      margin: 0px auto;      /*對于正方形元素border-radius設置為50%剛好變成圓形*/     border-radius: 50%;       /*寬度為10px的、不透明度為0.7的黑色邊框效果*/     border: 10px solid hsla(0,0%,0%,.7);       /*通過邊框陰影實現(xiàn)立體按鈕效果,inset是內陰影效果*/     box-shadow: inset 0 15px 15px -5px hsla(0,0%,100%,.7),                   inset 0 -5px 10px 3px hsla(0,0%,0%,.6),                   0 8px 10px 2px hsla(0,0%,0%,.3);      background-position: center;      /*初始縮放0.66倍*/     transform: scale(.66);       /*在失去焦點時根據(jù)自定義的貝塞爾時間曲線做動畫變換效果*/     transition: transform .5s cubic-bezier(.32,0,.15,1);   }      section > div:hover {      cursor: none;      /*懸停時恢復原始大小*/     transform: scale(1);       /*鼠標懸停時根據(jù)自定義的貝塞爾時間曲線做動畫變換效果*/     transition: transform .2s cubic-bezier(.32,0,.15,1);   }

上面的代碼中用到了貝塞爾曲線,在數(shù)學的數(shù)值分析領域中,貝塞爾曲線又稱貝賽爾曲線(B&eacute;zier曲線)是電腦圖形學中相當重要的參數(shù)曲線。更高維度的廣泛化貝塞爾曲線就稱作貝塞爾曲面,其中貝塞爾三角是一種特殊的實例。

貝塞爾曲線于1962年,由法國工程師皮埃爾&middot;貝塞爾(Pierre B&eacute;zier)所廣泛發(fā)表,他運用貝塞爾曲線來為汽車的主體進行設計。貝塞爾曲線最初由Paul de Casteljau于1959年運用de Casteljau算法開發(fā),以穩(wěn)定數(shù)值的方法求出貝塞爾曲線。

想更加深入的了解貝塞爾曲線可以到維基百科了解:貝塞爾曲線。下面是五種效果的完整代碼:

效果一(Praticle)的完整代碼:

.particle {      background-size: 12px 12px;      background-color: #000;         /* the default highlight was too strong */     box-shadow: inset 0 15px 15px -5px hsla(0,0%,100%,.25), inset 0 -5px 10px 3px hsla(0,0%,0%,.6), 0 8px 10px 2px hsla(0,0%,0%,.3);         background-image:     -webkit-radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                          -webkit-repeating-radial-gradient( white 0px, black 2px, black 48px);      background-image:        -moz-radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                             -moz-repeating-radial-gradient( white 0px, black 2px, black 48px);      background-image:         -ms-radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                              -ms-repeating-radial-gradient( white 0px, black 2px, black 48px);      background-image:          -o-radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                               -o-repeating-radial-gradient( white 0px, black 2px, black 48px);      background-image:             radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                                  repeating-radial-gradient( white 0px, black 2px, black 48px);  }  .particle:hover {      -webkit-animation: particle-size .24s linear infinite, particle-positon .48s linear infinite alternate;         -moz-animation: particle-size .24s linear infinite, particle-positon .48s linear infinite alternate;          -ms-animation: particle-size .24s linear infinite, particle-positon .48s linear infinite alternate;           -o-animation: particle-size .24s linear infinite, particle-positon .48s linear infinite alternate;              animation: particle-size .24s linear infinite, particle-positon .48s linear infinite alternate;  }     @-webkit-keyframes particle-size { from { background-size: 6px 6px, 12px 12px; } to { background-size: 12px 12px, 24px 24px; } }     @-moz-keyframes particle-size { from { background-size: 6px 6px, 12px 12px; } to { background-size: 12px 12px, 24px 24px; } }      @-ms-keyframes particle-size { from { background-size: 6px 6px, 12px 12px; } to { background-size: 12px 12px, 24px 24px; } }       @-o-keyframes particle-size { from { background-size: 6px 6px, 12px 12px; } to { background-size: 12px 12px, 24px 24px; } }          @keyframes particle-size { from { background-size: 6px 6px, 12px 12px; } to { background-size: 12px 12px, 24px 24px; } }     @-webkit-keyframes particle-positon { from { background-position: 60px, 60px; } to { background-position: 140px, 140px; } }     @-moz-keyframes particle-positon { from { background-position: 60px, 60px; } to { background-position: 140px, 140px; } }      @-ms-keyframes particle-positon { from { background-position: 60px, 60px; } to { background-position: 140px, 140px; } }       @-o-keyframes particle-positon { from { background-position: 60px, 60px; } to { background-position: 140px, 140px; } }          @keyframes particle-positon { from { background-position: 60px, 60px; } to { background-position: 140px, 140px; } }

這個效果使用了 CSS3 radial-gradient(徑向漸變或者放射性漸變,另外一種是線性漸變)、repeating-radial-gradient(重復漸變)以及 CSS3 Animation(動畫),關于 CSS3 漸變的詳細使用方法可以參考這篇文章:CSS3 Gradient,CSS3 動畫可以參考這篇文章:CSS3 Animation。

為了便于閱讀和學習,效果一的代碼精簡后如下:

.particle {      background-size: 12px 12px;      background-color: #000;      /*前面公共樣式部分box-shadow產(chǎn)生的高亮效果太強,這里重新配置*/     box-shadow: inset 0 15px 15px -5px hsla(0,0%,100%,.25),                  inset 0 -5px 10px 3px hsla(0,0%,0%,.6),                  0 8px 10px 2px hsla(0,0%,0%,.3);      /*使用徑向漸變和重復漸變來實現(xiàn)背景圖片效果*/     background-image: radial-gradient( #555 0px, hsla(0,0%,0%,0) 2px, hsla(0,0%,0%,0) 24px),                        repeating-radial-gradient( white 0px, black 2px, black 48px);  }     .particle:hover {      /*鼠標懸停的時候執(zhí)行particle-size和particle-positon兩個動畫效果*/     animation: particle-size .24s linear infinite,           particle-positon .48s linear infinite alternate;  }         @keyframes particle-size {       /*這個名為particle-size的關鍵幀用來產(chǎn)生背景尺寸變化動畫效果*/     from { background-size: 6px 6px, 12px 12px; }       to { background-size: 12px 12px, 24px 24px; }   }     @keyframes particle-positon {       /*這個名為particle-positon的關鍵幀用來產(chǎn)生背景位置變化動畫效果*/     from { background-position: 60px, 60px; }       to { background-position: 140px, 140px; }   }

效果二(Cells)的完整代碼:

.cells {      background-size: 24px 24px;      background-color: #fff;      background-image: -webkit-repeating-radial-gradient( black 8px, white 12px);      background-image:    -moz-repeating-radial-gradient( black 8px, white 12px);      background-image:       -ms-repeating-radial-gradient( black 8px, white 12px);      background-image:        -o-repeating-radial-gradient( black 8px, white 12px);      background-image:           repeating-radial-gradient( black 8px, white 12px);  }  .cells:hover {      -webkit-animation: cells 0.4s linear infinite;         -moz-animation: cells 0.4s linear infinite;          -ms-animation: cells 0.4s linear infinite;           -o-animation: cells 0.4s linear infinite;              animation: cells 0.4s linear infinite;  }  @-webkit-keyframes cells { from { background-size: 12px 12px; } to { background-size: 24px 24px; } }     @-moz-keyframes cells { from { background-size: 12px 12px; } to { background-size: 24px 24px; } }      @-ms-keyframes cells { from { background-size: 12px 12px; } to { background-size: 24px 24px; } }       @-o-keyframes cells { from { background-size: 12px 12px; } to { background-size: 24px 24px; } }          @keyframes cells { from { background-size: 12px 12px; } to { background-size: 24px 24px; } }

效果二代碼和效果一代碼類似,差別是效果二的背景是只用了重復漸變(repeating-radial-gradient),動畫效果只是背景尺寸(background-size)的變化,精簡后的代碼如下:

.cells {      background-size: 24px 24px;      background-color: #fff;      /*使用重復徑向漸變特性來實現(xiàn)背景圖片效果*/     background-image: repeating-radial-gradient( black 8px, white 12px);  }  .cells:hover {      /*鼠標懸停的時候執(zhí)行cells動畫效果*/     animation: cells 0.4s linear infinite;  }  @keyframes cells {       /*定義一個名為cells的關鍵幀用來產(chǎn)生背景尺寸變化動畫效果*/     from { background-size: 12px 12px; }       to { background-size: 24px 24px; }   }

效果三(Jelly)的完整代碼:

.jelly {      background-size: 60px 60px;      background-color: hsla(320,80%,60%,1);         background-image:     -webkit-repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                          -webkit-repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);      background-image:        -moz-repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                             -moz-repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);      background-image:         -ms-repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                              -ms-repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);      background-image:          -o-repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                               -o-repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);      background-image:             repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                                  repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);  }  .jelly:hover {      -webkit-animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;         -moz-animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;          -ms-animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;           -o-animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;              animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;  }     @-webkit-keyframes jelly {      from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }  @-moz-keyframes jelly {      from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }  @-ms-keyframes jelly {      from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }  @-o-keyframes jelly {      from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }  @keyframes jelly {      from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }

效果三和效果一的代碼類似,不同的地方是動畫多了個 50% 關鍵幀,精簡后的代碼如下:

.jelly {      background-size: 60px 60px;      background-color: hsla(320,80%,60%,1);      /*使用徑向漸變和重復漸變來實現(xiàn)背景圖片效果*/     background-image: repeating-radial-gradient( hsla(320,100%,60%,.6) 0px, hsla(220,100%,60%,0) 60%),                      repeating-radial-gradient( hsla(330,100%,40%,1) 12%, hsla(320,80%,60%,1) 24px);  }  .jelly:hover {      /*鼠標懸停的時候執(zhí)行jelly動畫效果*/     animation: jelly 1.4s cubic-bezier(.1,.4,.9,.6) infinite;  }     @keyframes jelly {      /*定義一個名為jelly的關鍵幀用來產(chǎn)生背景尺寸變化動畫效果*/     from { background-size:  60px  60px,  24px  24px; }      50%  { background-size: 120px 120px, 100px 100px; }      to   { background-size:  24px  24px, 140px 140px; }  }

效果四(Blobbs)的完整代碼:

.blobbs {      background-size: 66px 66px;      background-color: hsl(200,100%,50%);         background-image:     -webkit-repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),                          -webkit-repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);      background-image:        -moz-repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),                             -moz-repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);      background-image:         -ms-repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),                              -ms-repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);      background-image:          -o-repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),                               -o-repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);      background-image:             repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),                                  repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);  }  .blobbs:hover {      -webkit-animation:     blobbs-position   6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size     .75s cubic-bezier(.4,0,.2,1) infinite alternate;         -moz-animation:     blobbs-position   6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size     .75s cubic-bezier(.4,0,.2,1) infinite alternate;          -ms-animation:     blobbs-position   6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size     .75s cubic-bezier(.4,0,.2,1) infinite alternate;           -o-animation:     blobbs-position   6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size     .75s cubic-bezier(.4,0,.2,1) infinite alternate;              animation:     blobbs-position   6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size     .75s cubic-bezier(.4,0,.2,1) infinite alternate;  }     @-webkit-keyframes blobbs-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-moz-keyframes blobbs-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-ms-keyframes blobbs-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-o-keyframes blobbs-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @keyframes blobbs-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }     @-webkit-keyframes blobbs-size { from { background-size: 200px 200px, 200px 200px; } to { background-size:  66px  66px, 66px 66px; } }     @-moz-keyframes blobbs-size { from { background-size: 200px 200px, 200px 200px; } to { background-size:  66px  66px, 66px 66px; } }      @-ms-keyframes blobbs-size { from { background-size: 200px 200px, 200px 200px; } to { background-size:  66px  66px, 66px 66px; } }       @-o-keyframes blobbs-size { from { background-size: 200px 200px, 200px 200px; } to { background-size:  66px  66px, 66px 66px; } }          @keyframes blobbs-size { from { background-size: 200px 200px, 200px 200px; } to { background-size:  66px  66px, 66px 66px; } }

效果四的背景位置變化動畫有0%,25%,50%,75%和100%五個關鍵幀,動畫效果更豐富,精簡后的代碼如下:

.blobbs {      background-size: 66px 66px;      background-color: hsl(200,100%,50%);      background-image: repeating-radial-gradient( hsla(200,100%,80%,.8) 0px, hsla(200,100%,80%,.5) 4px, hsla(200,100%,80%,0) 50px),       repeating-radial-gradient( hsla(260,100%, 0%, 0) 0px, hsla(260,100%,50%,.1) 2px, hsla(260,100%, 0%,0) 10px);  }  .blobbs:hover {      animation: blobbs-position 6s cubic-bezier(.4,0,.2,1) infinite,                          blobbs-size .75s cubic-bezier(.4,0,.2,1) infinite alternate;  }     @keyframes blobbs-position {        0% { background-position: left  top, left  top; }       25% { background-position: right top, left  bottom; }       50% { background-position: right bottom, right bottom; }       75% { background-position: left  bottom, right top; }      100% { background-position: left  top, left  top; }  }     @keyframes blobbs-size {       from { background-size: 200px 200px, 200px 200px; }       to { background-size:  66px  66px, 66px 66px; }   }

效果五(Chase)的完整代碼:

.chase {      background-repeat: no-repeat, repeat;      background-size: 180px 180px;      background-color: hsl(50,100%,70%);         background-image:     -webkit-repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),                          -webkit-repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);      background-image:        -moz-repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),                             -moz-repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);      background-image:         -ms-repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),                              -ms-repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);      background-image:          -o-repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),                               -o-repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);      background-image:             repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),                                  repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);  }  .chase:hover {      -webkit-animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;         -moz-animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;          -ms-animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;           -o-animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;              animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;  }     @-webkit-keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-moz-keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-ms-keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @-o-keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }  @keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }     @-webkit-keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }  @-moz-keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }  @-ms-keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }  @-o-keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }  @keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }

最后這個效果比前面四個效果都更復雜,背景位置變化動畫有0%,25%,50%,75%和100%五個關鍵幀,背景尺寸的變化動畫有0%(from),50%,100%(to)三個關鍵幀,精簡后的代碼如下:

.chase {      background-repeat: no-repeat, repeat;      background-size: 180px 180px;      background-color: hsl(50,100%,70%);      background-image: repeating-radial-gradient( hsla(50,100%,100%,1) 0px, hsla(50,100%,90%, 1) 10px, hsla(50,100%,70%,.2)  12px, hsla(50,100%,70%,0) 130px),      repeating-radial-gradient( hsla(20,100%, 50%,0) 20%, hsla(20,100%,50%,.4) 80%,  hsla(50,100%,70%, 1) 120px);  }  .chase:hover {      animation: chase-position 1.2s infinite, chase-size .4s infinite alternate;  }     @keyframes chase-position {        0% { background-position: left  top,      left  top; }       25% { background-position: right top,         left  bottom; }       50% { background-position: right bottom,     right bottom; }       75% { background-position: left  bottom,    right top; }      100% { background-position: left  top,        left  top; }  }     @keyframes chase-size {      from { background-size: 120px 120px, 300px 300px; }       50% { background-size: 160px 160px, 150px 150px; }      to   { background-size: 180px 180px, 100px 100px; }  }

到此,關于“CSS3怎么實現(xiàn)動畫按鈕效果”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

css
AI