• 吸引注意力的动画


    <p><strong>单击</strong> 按钮以激活其动画。</p>
    <div class='btn-container'>
      <button class='btn btn--shockwave is-active'>
        Shockwave
      </button>
      <button class='btn btn--jump'>
        Jump
      </button>
      <button class='btn btn--pulse'>
        Pulse
      </button>
      <button class='btn btn--blink'>
        Blink
      </button>
      <button class='btn btn--wiggle'>
        Wiggle
      </button>
      <button class='btn btn--wut'>
        Hatching Alien
      </button>
    </div>
    

      

    body {
      max-width: 600px;
      margin: 4.8rem auto;
      background: #acd4e4;
      font-family: tahoma, helvetica neue, helvetica, arial, sans-serif;
      background: linear-gradient(to right, #acd4e4, #bbe0df);
      text-align: center;
    }
    
    .btn-container {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-around;
    }
    
    .btn {
      width: 6.4rem;
      line-height: 6.4rem;
      background: #fff;
      border-radius: 50%;
      text-align: center;
      margin: 1.6rem;
      font-size: 0.8rem;
      border: none;
      padding: 0;
      position: relative;
      outline: none;
    }
    
    .btn--shockwave.is-active {
      -webkit-animation: shockwaveJump 1s ease-out infinite;
              animation: shockwaveJump 1s ease-out infinite;
    }
    .btn--shockwave.is-active:after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      -webkit-animation: shockwave 1s .65s ease-out infinite;
              animation: shockwave 1s .65s ease-out infinite;
    }
    .btn--shockwave.is-active:before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      -webkit-animation: shockwave 1s .5s ease-out infinite;
              animation: shockwave 1s .5s ease-out infinite;
    }
    
    @-webkit-keyframes shockwaveJump {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
      }
      40% {
        -webkit-transform: scale(1.08);
                transform: scale(1.08);
      }
      50% {
        -webkit-transform: scale(0.98);
                transform: scale(0.98);
      }
      55% {
        -webkit-transform: scale(1.02);
                transform: scale(1.02);
      }
      60% {
        -webkit-transform: scale(0.98);
                transform: scale(0.98);
      }
      100% {
        -webkit-transform: scale(1);
                transform: scale(1);
      }
    }
    
    @keyframes shockwaveJump {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
      }
      40% {
        -webkit-transform: scale(1.08);
                transform: scale(1.08);
      }
      50% {
        -webkit-transform: scale(0.98);
                transform: scale(0.98);
      }
      55% {
        -webkit-transform: scale(1.02);
                transform: scale(1.02);
      }
      60% {
        -webkit-transform: scale(0.98);
                transform: scale(0.98);
      }
      100% {
        -webkit-transform: scale(1);
                transform: scale(1);
      }
    }
    @-webkit-keyframes shockwave {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 0 2px rgba(0, 0, 0, 0.15), inset 0 0 1px rgba(0, 0, 0, 0.15);
      }
      95% {
        box-shadow: 0 0 50px rgba(0, 0, 0, 0), inset 0 0 30px rgba(0, 0, 0, 0);
      }
      100% {
        -webkit-transform: scale(2.25);
                transform: scale(2.25);
      }
    }
    @keyframes shockwave {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 0 2px rgba(0, 0, 0, 0.15), inset 0 0 1px rgba(0, 0, 0, 0.15);
      }
      95% {
        box-shadow: 0 0 50px rgba(0, 0, 0, 0), inset 0 0 30px rgba(0, 0, 0, 0);
      }
      100% {
        -webkit-transform: scale(2.25);
                transform: scale(2.25);
      }
    }
    .btn--jump.is-active {
      -webkit-animation: .4s jump ease infinite alternate;
              animation: .4s jump ease infinite alternate;
    }
    
    @-webkit-keyframes jump {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
      }
      100% {
        -webkit-transform: scale(1.05);
                transform: scale(1.05);
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
      }
    }
    
    @keyframes jump {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
      }
      100% {
        -webkit-transform: scale(1.05);
                transform: scale(1.05);
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
      }
    }
    .btn--pulse.is-active {
      background: transparent;
    }
    .btn--pulse.is-active:after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      background: #fff;
      -webkit-animation: pulse 0.4s ease infinite alternate;
              animation: pulse 0.4s ease infinite alternate;
      z-index: -1;
    }
    
    @-webkit-keyframes pulse {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
        border-radius: 50%;
      }
      100% {
        -webkit-transform: scale(1.05);
                transform: scale(1.05);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
        border-radius: 45%;
      }
    }
    
    @keyframes pulse {
      0% {
        -webkit-transform: scale(1);
                transform: scale(1);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
        border-radius: 50%;
      }
      100% {
        -webkit-transform: scale(1.05);
                transform: scale(1.05);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
        border-radius: 45%;
      }
    }
    .btn--blink.is-active {
      background: transparent;
    }
    .btn--blink.is-active:after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      background: #fff;
      -webkit-animation: blink 1.33s ease-out infinite;
              animation: blink 1.33s ease-out infinite;
      z-index: -1;
    }
    
    @-webkit-keyframes blink {
      0% {
        opacity: 1;
      }
      20% {
        opacity: .5;
      }
      100% {
        opacity: 1;
      }
    }
    
    @keyframes blink {
      0% {
        opacity: 1;
      }
      20% {
        opacity: .5;
      }
      100% {
        opacity: 1;
      }
    }
    .btn--wiggle.is-active {
      -webkit-animation: 1s wiggle ease infinite;
              animation: 1s wiggle ease infinite;
    }
    
    @-webkit-keyframes wiggle {
      0% {
        -webkit-transform: rotate(-3deg);
                transform: rotate(-3deg);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
      }
      20% {
        -webkit-transform: rotate(20deg);
                transform: rotate(20deg);
      }
      40% {
        -webkit-transform: rotate(-15deg);
                transform: rotate(-15deg);
      }
      60% {
        -webkit-transform: rotate(5deg);
                transform: rotate(5deg);
      }
      90% {
        -webkit-transform: rotate(-1deg);
                transform: rotate(-1deg);
      }
      100% {
        -webkit-transform: rotate(0);
                transform: rotate(0);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
      }
    }
    
    @keyframes wiggle {
      0% {
        -webkit-transform: rotate(-3deg);
                transform: rotate(-3deg);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
      }
      20% {
        -webkit-transform: rotate(20deg);
                transform: rotate(20deg);
      }
      40% {
        -webkit-transform: rotate(-15deg);
                transform: rotate(-15deg);
      }
      60% {
        -webkit-transform: rotate(5deg);
                transform: rotate(5deg);
      }
      90% {
        -webkit-transform: rotate(-1deg);
                transform: rotate(-1deg);
      }
      100% {
        -webkit-transform: rotate(0);
                transform: rotate(0);
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
      }
    }
    .btn--wut.is-active {
      -webkit-animation: 1s fullRotation ease infinite;
              animation: 1s fullRotation ease infinite;
    }
    .btn--wut.is-active:before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      background: #fff;
      -webkit-animation: wutBefore 0.8s .4s ease-out infinite;
              animation: wutBefore 0.8s .4s ease-out infinite;
      z-index: -1;
    }
    .btn--wut.is-active:after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      border-radius: 50%;
      background: #fff;
      -webkit-animation: wut 0.8s ease-out infinite;
              animation: wut 0.8s ease-out infinite;
      z-index: -1;
    }
    
    @-webkit-keyframes fullRotation {
      0% {
        -webkit-transform: rotate(-3deg) scale(1) translate3d(0, 0, 0);
                transform: rotate(-3deg) scale(1) translate3d(0, 0, 0);
      }
      20% {
        -webkit-transform: rotate(50deg) translate3d(0, 5px, 0);
                transform: rotate(50deg) translate3d(0, 5px, 0);
      }
      40% {
        -webkit-transform: rotate(-15deg) scale(1.1) translate3d(0, 8px, -5px);
                transform: rotate(-15deg) scale(1.1) translate3d(0, 8px, -5px);
      }
      60% {
        -webkit-transform: rotate(5deg) translate3d(5px, -8px, -80px);
                transform: rotate(5deg) translate3d(5px, -8px, -80px);
      }
      90% {
        -webkit-transform: rotate(-1deg) translate3d(0, 0, 0);
                transform: rotate(-1deg) translate3d(0, 0, 0);
      }
      100% {
        -webkit-transform: rotate(0);
                transform: rotate(0);
      }
    }
    
    @keyframes fullRotation {
      0% {
        -webkit-transform: rotate(-3deg) scale(1) translate3d(0, 0, 0);
                transform: rotate(-3deg) scale(1) translate3d(0, 0, 0);
      }
      20% {
        -webkit-transform: rotate(50deg) translate3d(0, 5px, 0);
                transform: rotate(50deg) translate3d(0, 5px, 0);
      }
      40% {
        -webkit-transform: rotate(-15deg) scale(1.1) translate3d(0, 8px, -5px);
                transform: rotate(-15deg) scale(1.1) translate3d(0, 8px, -5px);
      }
      60% {
        -webkit-transform: rotate(5deg) translate3d(5px, -8px, -80px);
                transform: rotate(5deg) translate3d(5px, -8px, -80px);
      }
      90% {
        -webkit-transform: rotate(-1deg) translate3d(0, 0, 0);
                transform: rotate(-1deg) translate3d(0, 0, 0);
      }
      100% {
        -webkit-transform: rotate(0);
                transform: rotate(0);
      }
    }
    @-webkit-keyframes wut {
      0% {
        border-radius: 50%;
        -webkit-transform: skew(0) translate3d(0, 0px, 0px);
                transform: skew(0) translate3d(0, 0px, 0px);
      }
      10% {
        -webkit-transform: translate3d(0, -10px, 0);
                transform: translate3d(0, -10px, 0);
      }
      50% {
        border-radius: 50%;
      }
      80% {
        border-radius: 30%;
        -webkit-transform: translate3d(20, 10px, 20px);
                transform: translate3d(20, 10px, 20px);
      }
      100% {
        border-radius: 50%;
        -webkit-transform: skew(0) translate3d(0, 0px, 0px);
                transform: skew(0) translate3d(0, 0px, 0px);
      }
    }
    @keyframes wut {
      0% {
        border-radius: 50%;
        -webkit-transform: skew(0) translate3d(0, 0px, 0px);
                transform: skew(0) translate3d(0, 0px, 0px);
      }
      10% {
        -webkit-transform: translate3d(0, -10px, 0);
                transform: translate3d(0, -10px, 0);
      }
      50% {
        border-radius: 50%;
      }
      80% {
        border-radius: 30%;
        -webkit-transform: translate3d(20, 10px, 20px);
                transform: translate3d(20, 10px, 20px);
      }
      100% {
        border-radius: 50%;
        -webkit-transform: skew(0) translate3d(0, 0px, 0px);
                transform: skew(0) translate3d(0, 0px, 0px);
      }
    }
    @-webkit-keyframes wutBefore {
      0% {
        border-radius: 50%;
        -webkit-transform: translate3d(0, 0px, 0px);
                transform: translate3d(0, 0px, 0px);
      }
      10% {
        -webkit-transform: translate3d(-10px, 10px, 0);
                transform: translate3d(-10px, 10px, 0);
      }
      70% {
        border-radius: 50%;
      }
      80% {
        border-radius: 30%;
        -webkit-transform: translate3d(-20px, -10px, -20px);
                transform: translate3d(-20px, -10px, -20px);
      }
      100% {
        border-radius: 50%;
        -webkit-transform: translate3d(0, 0px, 0px);
                transform: translate3d(0, 0px, 0px);
      }
    }
    @keyframes wutBefore {
      0% {
        border-radius: 50%;
        -webkit-transform: translate3d(0, 0px, 0px);
                transform: translate3d(0, 0px, 0px);
      }
      10% {
        -webkit-transform: translate3d(-10px, 10px, 0);
                transform: translate3d(-10px, 10px, 0);
      }
      70% {
        border-radius: 50%;
      }
      80% {
        border-radius: 30%;
        -webkit-transform: translate3d(-20px, -10px, -20px);
                transform: translate3d(-20px, -10px, -20px);
      }
      100% {
        border-radius: 50%;
        -webkit-transform: translate3d(0, 0px, 0px);
                transform: translate3d(0, 0px, 0px);
      }
    }
    document.addEventListener('click', click);
    
    function click(e) {
      var el = void 0;
    
      el = e.target;
    
      if (el !== e.currentTarget) {
        if (el.nodeName === 'BUTTON') {
    
          if (el.classList.contains('is-active')) {
            el.classList.remove('is-active');
          } else {
            el.classList.add('is-active');
          }
        }
      }
      event.stopPropagation();
    }
  • 相关阅读:
    markdown grammar
    vs the address of offline package
    步步为营-66-Socket通信
    步步为营-65-线程小例子
    线程使用中常见的错误-“System.InvalidOperationException”线程间操作无效: 从不是创建控件“ ”的线程访问它。
    步步为营-64-进程&线程
    步步为营-63-Asp.net-get与post
    步步为营-62-Excel的导入和导出
    步步为营-61-拼音组件
    步步为营-60-代码生成器
  • 原文地址:https://www.cnblogs.com/qq735675958/p/11397154.html
Copyright © 2020-2023  润新知