css+svg实现无限循环的曲线动画效果代码

代码语言:html

所属分类:动画

代码描述:css+svg实现无限循环的曲线动画效果代码

代码标签: css svg 曲线 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">



    <style>
        * {
          border: 0;
          box-sizing: border-box;
          margin: 0;
          padding: 0;
        }
        
        :root {
          font-size: calc(16px + (24 - 16) * (100vw - 320px) / (1280 - 320));
        }
        
        body {
          background: black;
          font: 1em/1.5 sans-serif;
          height: 100vh;
          display: grid;
          place-items: center;
        }
        
        main {
          padding: 1.5em 0;
        }
        
        .ic {
          display: block;
          width: 16em;
          height: 16em;
        }
        .ic__loop {
          animation: loop 4s linear infinite;
        }
        .ic__loop:nth-of-type(2) {
          animation-delay: -0.0833333333s;
        }
        .ic__loop:nth-of-type(3) {
          animation-delay: -0.1666666667s;
        }
        .ic__loop:nth-of-type(4) {
          animation-delay: -0.25s;
        }
        .ic__loop:nth-of-type(5) {
          animation-delay: -0.3333333333s;
        }
        .ic__loop:nth-of-type(6) {
          animation-delay: -0.4166666667s;
        }
        .ic__loop:nth-of-type(7) {
          animation-delay: -0.5s;
        }
        .ic__loop:nth-of-type(8) {
          animation-delay: -0.5833333333s;
        }
        .ic__loop:nth-of-type(9) {
          animation-delay: -0.6666666667s;
        }
        .ic__loop:nth-of-type(10) {
          animation-delay: -0.75s;
        }
        .ic__loop:nth-of-type(11) {
          animation-delay: -0.8333333333s;
        }
        .ic__loop:nth-of-type(12) {
          animation-delay: -0.9166666667s;
        }
        .ic__loop:nth-of-type(13) {
          animation-delay: -1s;
        }
        .ic__loop:nth-of-type(14) {
          animation-delay: -1.0833333333s;
        }
        .ic__loop:nth-of-type(15) {
          animation-delay: -1.1666666667s;
        }
        .ic__loop:nth-of-type(16) {
          animation-delay: -1.25s;
        }
        .ic__loop:nth-of-type(17) {
          animation-delay: -1.3333333333s;
        }
        .ic__loop:nth-of-type(18) {
          animation-delay: -1.4166666667s;
        }
        .ic__loop:nth-of-type(19) {
          animation-delay: -1.5s;
        }
        .ic__loop:nth-of-type(20) {
          animation-delay: -1.5833333333s;
        }
        .ic__loop:nth-of-type(21) {
          animation-delay: -1.6666666667s;
        }
        .ic__loop:nth-of-type(22) {
          animation-delay: -1.75s;
        }
        .ic__loop:nth-of-type(23) {
          animation-delay: -1.8333333333s;
        }
        .ic__loop:nth-of-type(24) {
          animation-delay: -1.9166666667s;
        }
        .ic__loop:nth-of-type(25) {
          animation-delay: -2s;
        }
        .ic__loop:nth-of-type(26) {
          animation-delay: -2.0833333333s;
        }
        .ic__loop:nth-of-type(27) {
          animation-delay: -2.1666666667s;
        }
        .ic__loop:nth-of-type(28) {
          animation-delay: -2.25s;
        }
        .ic__loop:nth-of-type(29) {
          animation-delay: -2.3333333333s;
        }
        .ic__loop:nth-of-type(30) {
          animation-delay: -2.4166666667s;
        }
        .ic__loop:nth-of-type(31) {
          animation-delay: -2.5s;
        }
        .ic__loop:nth-of-type(32) {
          animation-delay: -2.5833333333s;
        }
        .ic__loop:nth-of-type(33) {
          animation-delay: -2.6666666667s;
        }
        .ic__loop:nth-of-type(34) {
          animation-delay: -2.75s;
        }
        .ic__loop:nth-of-type(35) {
          animation-delay: -2.8333333333s;
        }
        .ic__loop:nth-of-type(36) {
          animation-delay: -2.9166666667s;
        }
        .ic__loop:nth-of-type(37) {
          animation-delay: -3s;
        }
        .ic__loop:nth-of-type(38) {
          animation-delay: -3.0833333333s;
        }
        .ic__loop:nth-of-type(39) {
          animation-delay: -3.1666666667s;
        }
        .ic__loop:nth-of-type(40) {
          animation-delay: -3.25s;
        }
        .ic__loop:nth-of-type(41) {
          animation-delay: -3.3333333333s;
        }
        .ic__loop:nth-of-type(42) {
          animation-delay: -3.4166666667s;
        }
        .ic__loop:nth-of-type(43) {
          animation-delay: -3.5s;
        }
        .ic__loop:nth-of-type(44) {
          animation-delay: -3.5833333333s;
        }
        .ic__loop:nth-of-type(45) {
          animation-delay: -3.6666666667s;
        }
        .ic__loop:nth-of-type(46) {
          animation-delay: -3.75s;
        }
        .ic__loop:nth-of-type(47) {
          animation-delay: -3.8333333333s;
        }
        .ic__loop:nth-of-type(48) {
          animation-delay: -3.9166666667s;
        }
        
        /* Animation */
        @keyframes loop {
          from {
            stroke-dashoffset: 0;
          }
          to {
            stroke-dashoffset: -600;
          }
        }
    </style>


</head>

<body >
    <main>
        <svg class="ic" viewBox="0 0 256 256" width="256px" height="256px" xmlns="http://www.w3.org/2000/svg">
    <defs>
      <linearGradient id="loop" x1="0" y1="0" x2="1" y2="0">
        <stop offset="0%" stop-color="hsl(53,90%,55%)"></stop>
        <stop offset="25%" stop-color="hsl(33,90%,55%)"></stop>
        <stop offset="50%" stop-color="hsl(3,90%,55%)"></stop>
        <stop offset="75%" stop-color="hsl(303,90%,35%)"></stop>
        <stop offset="100%" stop-color="hsl(223,90%,55%)"></stop>
      </linearGradient>
    </defs>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="0" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,2)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.020833333333333332" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,6)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.041666666666666664" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,10)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.0625" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,14)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.08333333333333333" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,18)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.10416666666666666" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,22)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.125" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,26)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.14583333333333331" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,30)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.16666666666666666" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,34)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.1875" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,38)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.20833333333333331" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,42)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.22916666666666666" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,46)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.25" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,50)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.2708333333333333" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,54)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.29166666666666663" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,58)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.3125" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,62)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.3333333333333333" d="M 48 1 C 24.18 1 1 8.18 1 32 C 1 55.82 24.18 63 48 63 C 80 63 128 32 128 32 C 128 32 176 1 208 1 C 231.761 1 255 8.239 255 32 C 255 55.761 231.761 63 208 63 C 176 63 128 32 128 32 C 128 32 80 1 48 1 Z" transform="translate(0,66)"></path>
    <path class="ic__loop" fill="none" stroke="url(#loop)" stroke-width="2" stroke-dasharray="300 300" stroke-dashoffset="-0.35416666666666663" d="M 48 1 C 24.18 1 .........完整代码请登录后点击上方下载按钮下载查看

网友评论0