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