line+css实现摇滚半程马拉松动画效果

代码语言:html

所属分类:动画

代码描述:line+css实现摇滚半程马拉松动画效果

代码标签: 半程 马拉松 动画 效果

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


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
:root {
  --opacity-start: 0.4;
  --minor-rotate-dur: 1s;
  --ferris-wheel-del: 0s;
  --ferris-wheel-dur: 20s;
  --eiffel-opacity-del: 1s;
  --eiffel-opacity-dur: 5s;
  --balloon-lines-del: 2s;
  --balloon-lines-dur: 4s;
  --luxor-light-del: 3s;
  --luxor-light-dur: 5s;
  --sign-opacity-del: 5s;
  --sign-opacity-dur: 10s;
  --excalibur-opacity-del: 7s;
  --excalibur-opacity-dur: 10s;
}

body {
  background-color: #222;
  display: flex;
  justify-content: center;
}

.rnr {
  height: 95vh;
  margin-top: 1vh;
}

#ferris-wheel #wheel {
  transform-origin: 600.98px 658.5px;
  transform: rotate(0deg);
  animation: ferris-wheel var(--ferris-wheel-dur) linear var(--ferris-wheel-del) infinite;
}
@keyframes ferris-wheel {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
#diamond {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-left var(--minor-rotate-dur) linear infinite;
}

#martini-glass {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-left var(--minor-rotate-dur) linear infinite;
}

#music-note {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-right var(--minor-rotate-dur) linear infinite;
}

#welcome-sign .sign-letter {
  opacity: var(--opacity-start);
}
#welcome-sign #sign-outline {
  opacity: 1;
}
#welcome-sign #sign-outline line, #welcome-sign #sign-outline path {
  animation: opacity-sign-outline var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-outline {
  0%, 55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-w {
  animation: opacity-sign-w var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-w {
  0%, 9.9% {
    opacity: var(--opacity-start);
  }
  10%, 55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-e-1 {
  animation: opacity-sign-e-1 var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-e-1 {
  0%, 14.9% {
    opacity: var(--opacity-start);
  }
  15%, 55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-l {
  animation: opacity-sign-l var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-l {
  0%, 19.9% {
    opacity: var(--opacity-start);
  }
  20% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-c {
  animation: opacity-sign-c var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-c {
  0%, 24.9% {
    opacity: var(--opacity-start);
  }
  25% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-o {
  animation: opacity-sign-o var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-o {
  0%, 29.9% {
    opacity: var(--opacity-start);
  }
  30% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-m {
  animation: opacity-sign-m var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-m {
  0%, 34.9% {
    opacity: var(--opacity-start);
  }
  35% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #sign-e-2 {
  animation: opacity-sign-e-2 var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-e-2 {
  0%, 39.9% {
    opacity: var(--opacity-start);
  }
  40% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#welcome-sign #welcome-date {
  animation: opacity-sign-date var(--sign-opacity-dur) linear var(--sign-opacity-del) infinite;
}
@keyframes opacity-sign-date {
  0%, 44.9% {
    opacity: var(--opacity-start);
  }
  45% {
    opacity: 1;
  }
  55% {
    opacity: 1;
  }
  55.1%, 58% {
    opacity: var(--opacity-start);
  }
  58.1%, 61% {
    opacity: 1;
  }
  61.1%, 64% {
    opacity: var(--opacity-start);
  }
  64.1%, 99.9% {
    opacity: 1;
  }
  100% {
    opacity: var(--opacity-start);
  }
}
#eiffel-tower #eiffel-tower-1 {
  animation: opacity-eiffel-1 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-1 {
  0%, 10% {
    opacity: var(--opacity-start);
  }
  10.1%, 100% {
    opacity: 1;
  }
}
#eiffel-tower #eiffel-tower-2 {
  animation: opacity-eiffel-2 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-2 {
  0%, 15% {
    opacity: var(--opacity-start);
  }
  15.1%, 100% {
    opacity: 1;
  }
}
#eiffel-tower #eiffel-tower-3 {
  animation: opacity-eiffel-3 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-3 {
  0%, 20% {
    opacity: var(--opacity-start);
  }
  20.1%, 100% {
    opacity: 1;
  }
}
#eiffel-tower #eiffel-tower-4 {
  animation: opacity-eiffel-4 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-4 {
  0%, 25% {
    opacity: var(--opacity-start);
  }
  25.1%, 100% {
    opacity: 1;
  }
}
#eiffel-tower #eiffel-tower-5 {
  animation: opacity-eiffel-5 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-5 {
  0%, 30% {
    opacity: var(--opacity-start);
  }
  30.1%, 100% {
    opacity: 1;
  }
}
#eiffel-tower #eiffel-tower-6 {
  animation: opacity-eiffel-6 var(--eiffel-opacity-dur) linear var(--eiffel-opacity-del) infinite;
}
@keyframes opacity-eiffel-6 {
  0%, 35% {
    opacity: var(--opacity-start);
  }
  35.1%, 100% {
    opacity: 1;
  }
}
#heart {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-right var(--minor-rotate-dur) linear infinite;
}

#luxor #light-bg {
  opacity: var(--opacity-start);
}
#luxor #light #middle-light {
  stroke-dasharray: 116;
  stroke-dashoffset: 0;
  animation: luxor-light-middle var(--luxor-light-dur) linear var(--luxor-light-del) infinite;
}
@keyframes luxor-light-middle {
  0% {
    stroke-dashoffset: 116;
  }
  10%, 70% {
    stroke-dashoffset: 0;
  }
  70.1%, 100% {
    stroke-dashoffset: 116;
  }
}
#luxor #light #left-yellow-light {
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
  animation: luxor-light-left-yellow var(--luxor-light-dur) linear var(--luxor-light-del) infinite;
}
@keyframes luxor-light-left-yellow {
  0% {
    stroke-dashoffset: 100;
  }
  10%, 70% {
    stroke-dashoffset: 0;
  }
  70.1%, 100% {
    stroke-dashoffset: 100;
  }
}
#luxor #light #right-yellow-light {
  stroke-dasharray: 100;
  stroke-dashoffset: 0;
  animation: luxor-light-right-yellow var(--luxor-light-dur) linear var(--luxor-light-del) infinite;
}
@keyframes luxor-light-right-yellow {
  0% {
    stroke-dashoffset: 100;
  }
  10%, 70% {
    stroke-dashoffset: 0;
  }
  70.1%, 100% {
    stroke-dashoffset: 100;
  }
}
#luxor #light #right-white-light {
  stroke-dasharray: 119;
  stroke-dashoffset: 0;
  animation: luxor-light-right-white var(--luxor-light-dur) linear var(--luxor-light-del) infinite;
}
@keyframes luxor-light-right-white {
  0% {
    stroke-dashoffset: 119;
  }
  10%, 70% {
    stroke-dashoffset: 0;
  }
  70.1%, 100% {
    stroke-dashoffset: 119;
  }
}
#luxor #light #left-white-light {
  stroke-dasharray: 103;
  stroke-dashoffset: 0;
  animation: luxor-light-left-white var(--luxor-light-dur) linear var(--luxor-light-del) infinite;
}
@keyframes luxor-light-left-white {
  0% {
    stroke-dashoffset: 103;
  }
  10%, 70% {
    stroke-dashoffset: 0;
  }
  70.1%, 100% {
    stroke-dashoffset: 103;
  }
}
#excalibur #left-tower {
  animation: opacity-excalibur-1 var(--excalibur-opacity-dur) linear var(--excalibur-opacity-del) infinite;
}
@keyframes opacity-excalibur-1 {
  0%, 10% {
    opacity: var(--opacity-start);
  }
  10.1%, 100% {
    opacity: 1;
  }
}
#excalibur #center-tower {
  animation: opacity-excalibur-2 var(--excalibur-opacity-dur) linear var(--excalibur-opacity-del) infinite;
}
@keyframes opacity-excalibur-2 {
  0%, 15% {
    opacity: var(--opacity-start);
  }
  15.1%, 100% {
    opacity: 1;
  }
}
#excalibur #right-tower {
  animation: opacity-excalibur-3 var(--excalibur-opacity-dur) linear var(--excalibur-opacity-del) infinite;
}
@keyframes opacity-excalibur-3 {
  0%, 20% {
    opacity: var(--opacity-start);
  }
  20.1%, 100% {
    opacity: 1;
  }
}
#statue-of-liberty #flame {
  transform-box: fill-box;
  transform-origin: bottom center;
  transform: rotate(0deg);
  animation: diamond var(--minor-rotate-dur) linear infinite;
}
@keyframes diamond {
  0%, 24.9% {
    transform: rotate(0deg);
  }
  25%, 74.9% {
    transform: rotate(-8deg);
  }
  75%, 100% {
    transform: rotate(0deg);
  }
}
#spade, #diamond-2 {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-left var(--minor-rotate-dur) linear infinite;
}

#clover-leaf {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-right var(--minor-rotate-dur) linear infinite;
}

#dice {
  transform-box: fill-box;
  transform-origin: center center;
  transform: rotate(0deg);
  animation: shake-right var(--minor-rotate-dur) linear infinite;
}

.balloon-line-left {
  stroke-dasharray: 500;
  stroke-dashoffset: 0;
  animation: balloon-lines-left var(--balloon-lines-dur) linear var(--balloon-lines-del) infinite;
}
@keyframes balloon-lines-left {
  0% {
    stroke-dashoffset: 500;
  }
  60%, 90% {
    stroke-dashoffset: 0;
  }
  90.1%, 100% {
    stroke-dashoffset: 500;
  }
}
.balloon-line-right {
  stroke-dasharray: 500;
  stroke-dashoffset: 0;
  animation: balloon-lines-right var(--balloon-lines-dur) linear var(--balloon-lines-del) infinite;
}
@keyframes balloon-lines-right {
  0%, 16% {
    stroke-dashoffset: 500;
  }
  60%, 90% {
    stroke-dashoffset: 0;
  }
  90.1%, 100% {
    stroke-dashoffset: 500;
  }
}
.balloon-line-bg {
  opacity: var(--opacity-start);
}

@keyframes shake-left {
  0%, 24.9% {
    transform: rotate(0deg);
  }
  25%, 74.9% {
    transform: rotate(-10deg);
  }
  75%, 100% {
    transform: rotate(0deg);
  }
}
@keyframes shake-right {
  0%, 24.9% {
    transform: rotate(0deg);
  }
  25%, 74.9% {
    transform: rotate(10deg);
  }
  75%, 100% {
    transform: rotate(0deg);
  }
}
</style>
<script>
  window.console = window.console || function(t) {};
</script>
<script>
  if (document.location.search.match(/type=embed/gi)) {
    window.parent.postMessage("resize", "*");
  }
</script>
</head>
<body translate="no">
<svg class="rnr" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 790.59 1071">
<defs>
<style>
      .cls-1, .cls-10, .cls-11, .cls-12, .cls-13, .cls-14, .cls-15, .cls-16, .cls-17, .cls-19, .cls-2, .cls-20, .cls-21, .cls-23, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9 {
        fill: none;
      }

      .cls-1 {
        stroke: #e0e0e0;
      }

      .cls-1, .cls-10, .cls-11, .cls-12, .cls-13, .cls-14, .cls-15, .cls-16, .cls-17, .cls-19, .cls-20, .cls-21, .cls-3, .cls-5, .cls-6, .cls-7, .cls-8, .cls-9 {
        stroke-linecap: round;
      }

      .cls-1, .cls-11, .cls-12, .cls-13, .cls-14, .cls-15, .cls-16, .cls-17, .cls-2, .cls-20, .cls-23, .cls-3, .cls-4, .cls-5, .cls-6, .cls-8 {
        stroke-miterlimit: 10;
      }

      .cls-1, .cls-11, .cls-12, .cls-19, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-9 {
        stroke-width: 6px;
      }

      .cls-2, .cls-5 {
        stroke: #9bec77;
      }

      .cls-10, .cls-13, .cls-14, .cls-15, .cls-16, .cls-17, .cls-3, .cls-4, .cls-9 {
        stroke: #fff;
      }

      .cls-24, .cls-6, .cls-7 {
        stroke: #1abcda;
      }

      .cls-10, .cls-19, .cls-21, .cls-24, .cls-7, .cls-9 {
        stroke-linejoin: round;
      }

      .cls-12, .cls-8 {
        stroke: #feed81;
      }

      .cls-8 {
        stroke-width: 9px;
      }

      .cls-10, .cls-13 {
        stroke-width: 7px;
      }

      .cls-11, .cls-19, .cls-20, .cls-21, .cls-23 {
        stroke: #ff7fcf;
      }

      .cls-14 {
        stroke-width: 7.5px;
      }

      .cls-14, .cls-15, .cls-16 {
        opacity: 0.98;
      }

      .cls-15 {
        stroke-width: 8px;
      }

      .cls-16 {
        stroke-width: 6.5px;
      }

      .cls-17, .cls-20 {
        stroke-width: 4.25px;
      }

      .cls-18 {
        fill: #9bec77;
      }

      .cls-22 {
        fill: #ff.........完整代码请登录后点击上方下载按钮下载查看

网友评论0