<small id="egjlb"></small>
<i id="egjlb"></i><small id="egjlb"><div id="egjlb"><cite id="egjlb"></cite></div></small>
      1. <span id="egjlb"><code id="egjlb"><p id="egjlb"></p></code></span>
      2. 技術頻道導航
        HTML/CSS
        .NET技術
        IIS技術
        PHP技術
        Js/JQuery
        Photoshop
        Fireworks
        服務器技術
        操作系統
        網站運營

        贊助商

        分類目錄

        贊助商

        最新文章

        搜索

        CSS3實現的發光動畫按鈕(有光隨鼠標移動的懸停效果)

        作者:admin    時間:2023-2-2 15:42:41    瀏覽:

        html5時代的網頁設計,更多人喜歡把按鈕做成具有鼠標懸停效果的動畫按鈕,這樣的按鈕令沉靜冰涼的網頁顯得更有生機活潑。

        如果你對動畫按鈕感興趣?可以看看下面這些文章:

        在本文里,將介紹CSS3實現的發光動畫按鈕,該按鈕具有光隨鼠標移動的懸停效果。

        demodownload

        HTML代碼

        HTML結構只有2、3行簡短的代碼:1個button標簽,一個名為“glow-button”的class類,button標簽里包含一個span標簽,該span標簽包含的是按鈕的文字。

        <button class="glow-button">
          <span>Button</span>
        </button>

        CSS代碼

        CSS代碼主要包含一個 .glow-button 的class類,該class具有顏色漸變的設計,還有動畫設計,以及鼠標懸停效果設計,所以代碼較多。

        .glow-button {
          --button-background: #09041e;
          --button-color: #fff;
          --button-shadow: rgba(33, 4, 104, 0.2);
          --button-shine-left: rgba(120, 0, 245, 0.5);
          --button-shine-right: rgba(200, 148, 255, 0.65);
          --button-glow-start: #B000E8;
          --button-glow-end: #009FFD;
          -webkit-appearance: none;
             -moz-appearance: none;
                  appearance: none;
          outline: none;
          border: none;
          font-family: inherit;
          font-size: 16px;
          font-weight: 500;
          border-radius: 11px;
          position: relative;
          line-height: 24px;
          cursor: pointer;
          color: var(--button-color);
          padding: 0;
          margin: 0;
          background: none;
          z-index: 1;
          box-shadow: 0 8px 20px var(--button-shadow);
        }
        .glow-button .gradient {
          position: absolute;
          inset: 0;
          border-radius: inherit;
          overflow: hidden;
          -webkit-mask-image: -webkit-radial-gradient(white, black);
          transform: scaleY(1.02) scaleX(1.005) rotate(-0.35deg);
        }
        .glow-button .gradient:before {
          content: "";
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          transform: scale(1.05) translateY(-44px) rotate(0deg) translateZ(0);
          padding-bottom: 100%;
          border-radius: 50%;
          background: linear-gradient(90deg, var(--button-shine-left), var(--button-shine-right));
          -webkit-animation: rotate linear 2s infinite;
                  animation: rotate linear 2s infinite;
        }
        .glow-button span {
          z-index: 1;
          position: relative;
          display: block;
          padding: 10px 0;
          width: 132px;
          border-radius: inherit;
          background-color: var(--button-background);
          overflow: hidden;
          -webkit-mask-image: -webkit-radial-gradient(white, black);
        }
        .glow-button span:before {
          content: "";
          position: absolute;
          left: -16px;
          top: -16px;
          transform: translate(var(--pointer-x, 0px), var(--pointer-y, 0px)) translateZ(0);
          width: 32px;
          height: 32px;
          border-radius: 50%;
          background-color: var(--button-glow, transparent);
          opacity: var(--button-glow-opacity, 0);
          transition: opacity var(--button-glow-duration, 0.5s);
          filter: blur(20px);
        }
        .glow-button:hover {
          --button-glow-opacity: 1;
          --button-glow-duration: .25s;
        }

        @-webkit-keyframes rotate {
          to {
            transform: scale(1.05) translateY(-44px) rotate(360deg) translateZ(0);
          }
        }

        @keyframes rotate {
          to {
            transform: scale(1.05) translateY(-44px) rotate(360deg) translateZ(0);
          }
        }
        html {
          box-sizing: border-box;
          -webkit-font-smoothing: antialiased;
        }

        * {
          box-sizing: inherit;
        }
        *:before, *:after {
          box-sizing: inherit;
        }

        JavaScript代碼

        該實例的鼠標懸停效果需要用到JavaScript代碼的配合來實現,需要引用到兩個js文件,文件已包含在源碼下載的壓縮包里。

        <script src='gsap.min.js'></script>
        <script src='chroma.min.js'></script>
        document.querySelectorAll(".glow-button").forEach(button => {
          const gradientElem = document.createElement("div");
          gradientElem.classList.add("gradient");

          button.appendChild(gradientElem);

          button.addEventListener("pointermove", e => {
            const rect = button.getBoundingClientRect();

            const x = e.clientX - rect.left;
            const y = e.clientY - rect.top;

            gsap.to(button, {
              "--pointer-x": `${x}px`,
              "--pointer-y": `${y}px`,
              duration: 0.6 });


            gsap.to(button, {
              "--button-glow": chroma.
              mix(
              getComputedStyle(button).
              getPropertyValue("--button-glow-start").
              trim(),
              getComputedStyle(button).getPropertyValue("--button-glow-end").trim(),
              x / rect.width).

              hex(),
              duration: 0.2 });

          });
        });

        總結

        本文介紹了CSS3實現的發光動畫按鈕,該按鈕具有光隨鼠標移動的懸停效果,喜歡該效果的朋友可以收藏一下,或下載源碼直接使用。

        相關文章

        x
        • 站長推薦
        亚洲成A人片在线观看无码专区_2021色精品极品在线观看视频_亚洲午夜精品A片一区二区无码l_992tv在线观看视频国产