Gradient Loader



  • グラデーションloaderを実装する過程で,filterおよびbackdrop-filterの属性を理解した.filterbackdrop-filterはいずれもグラフィック化された属性である.違いはbackdrop-filterが内容に影響を及ぼさず、背景にのみ影響を及ぼすことである.

  • また,今回はfilter: hue-rotate属性を用い,hueは色調を表す.トランスフォームアトリビュートとアニメーションアトリビュートを使用すると、一瞬ごとに変色効果を実現できます.
  • コード#コード#


    HTML

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />
        <title>Gradient loader</title>
      </head>
      <body>
        <div class="loader"></div>
      </body>
    </html>
    

    CSS

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    body {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      background: #000;
      min-height: 100vh;
    }
    .loader {
      position: relative;
      width: 150px;
      height: 150px;
      border-radius: 50%;
      background: linear-gradient(45deg, transparent, transparent 40%, #e5f403);
      animation: animate 1s linear infinite;
    }
    
    @keyframes animate {
      0% {
        transform: rotate(0);
        filter: hue-rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
        filter: hue-rotate(360deg);
      }
    }
    .loader::before {
      content: "";
      position: absolute;
      top: 6px;
      right: 6px;
      bottom: 6px;
      left: 6px;
      border-radius: 50%;
      background: #000;
      z-index: 100;
    }
    
    .loader::after {
      content: "";
      position: absolute;
      top: 0px;
      right: 0px;
      bottom: 0px;
      left: 0px;
      background: linear-gradient(45deg, transparent, transparent 40%, #e5f403);
      border-radius: 50%;
      z-index: 1;
      filter: blur(30px);
    }