前端嘛 Logo
前端嘛
一个可交互的火箭 Loading 动画

一个可交互的火箭 Loading 动画

2026-04-28
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Rocket Through Space</title>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style>
      :root {
        --ship-size: 10vmin;
        --sky-color: #1c1740;
        --ship-color: #f9e2fe;
        --ship-cap-color: crimson;
        --ship-wing-color: #4c3198;
        --ship-window-trim-color: #4c3198;
        --ship-booster-color: #c38382;
        --star-color: white;
        --stars-sm-speed: 5s;
        --stars-md-speed: 2s;
        --stars-lg-speed: 1s;
      }

      * {
        box-sizing: border-box;
      }

      html,
      body {
        height: 100%;
      }

      body {
        display: flex;
        position: relative;
        overflow: hidden;
        background-color: var(--sky-color);
      }

      .ship,
      .star-field {
        position: absolute;
        top: 50%;
        left: 50%;
        will-change: transform;
        transition: transform 0.4s ease;
        transform: translate(-50%, -50%);
      }

      .star-field {
        width: 200%;
        height: 200%;
        transition: transform 1s ease-out;
      }

      .hover-area {
        flex-grow: 1;
        z-index: 3;
      }
      .hover-area:nth-child(1):hover ~ .ship,
      .hover-area:nth-child(1):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-90deg);
      }
      .hover-area:nth-child(2):hover ~ .ship,
      .hover-area:nth-child(2):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-80deg);
      }
      .hover-area:nth-child(3):hover ~ .ship,
      .hover-area:nth-child(3):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-70deg);
      }
      .hover-area:nth-child(4):hover ~ .ship,
      .hover-area:nth-child(4):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-60deg);
      }
      .hover-area:nth-child(5):hover ~ .ship,
      .hover-area:nth-child(5):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-50deg);
      }
      .hover-area:nth-child(6):hover ~ .ship,
      .hover-area:nth-child(6):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-40deg);
      }
      .hover-area:nth-child(7):hover ~ .ship,
      .hover-area:nth-child(7):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-30deg);
      }
      .hover-area:nth-child(8):hover ~ .ship,
      .hover-area:nth-child(8):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-20deg);
      }
      .hover-area:nth-child(9):hover ~ .ship,
      .hover-area:nth-child(9):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(-10deg);
      }
      .hover-area:nth-child(10):hover ~ .ship,
      .hover-area:nth-child(10):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(0deg);
      }
      .hover-area:nth-child(11):hover ~ .ship,
      .hover-area:nth-child(11):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(0deg);
      }
      .hover-area:nth-child(12):hover ~ .ship,
      .hover-area:nth-child(12):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(10deg);
      }
      .hover-area:nth-child(13):hover ~ .ship,
      .hover-area:nth-child(13):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(20deg);
      }
      .hover-area:nth-child(14):hover ~ .ship,
      .hover-area:nth-child(14):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(30deg);
      }
      .hover-area:nth-child(15):hover ~ .ship,
      .hover-area:nth-child(15):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(40deg);
      }
      .hover-area:nth-child(16):hover ~ .ship,
      .hover-area:nth-child(16):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(50deg);
      }
      .hover-area:nth-child(17):hover ~ .ship,
      .hover-area:nth-child(17):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(60deg);
      }
      .hover-area:nth-child(18):hover ~ .ship,
      .hover-area:nth-child(18):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(70deg);
      }
      .hover-area:nth-child(19):hover ~ .ship,
      .hover-area:nth-child(19):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(80deg);
      }
      .hover-area:nth-child(20):hover ~ .ship,
      .hover-area:nth-child(20):hover ~ .star-field {
        transform: translate(-50%, -50%) rotate(90deg);
      }
      .hover-area:active ~ .star-field .stars-sm:before,
      .hover-area:active ~ .star-field .stars-sm:after {
        animation-duration: calc(var(--stars-sm-speed) / 2);
      }
      .hover-area:active ~ .star-field .stars-sm:after {
        animation-delay: calc(var(--stars-sm-speed) / -4);
      }
      .hover-area:active ~ .star-field .stars-md:before,
      .hover-area:active ~ .star-field .stars-md:after {
        animation-duration: calc(var(--stars-md-speed) / 2);
      }
      .hover-area:active ~ .star-field .stars-md:after {
        animation-delay: calc(var(--stars-md-speed) / -4);
      }
      .hover-area:active ~ .star-field .stars-lg:before,
      .hover-area:active ~ .star-field .stars-lg:after {
        animation-duration: calc(var(--stars-lg-speed) / 2);
      }
      .hover-area:active ~ .star-field .stars-lg:after {
        animation-delay: calc(var(--stars-lg-speed) / -4);
      }
      .hover-area:active ~ .ship .wrapper {
        animation: speed-up-ship 80ms linear infinite alternate;
      }
      .hover-area:active ~ .ship .exhaust {
        animation: speed-up-exhaust 80ms linear infinite alternate;
      }

      .ship .wrapper {
        display: flex;
      }

      .ship .body {
        position: relative;
        background-color: var(--ship-color);
        border-radius: 0 0 50% 50%/76% 76% 15% 15%;
      }
      .ship .body:before {
        content: "";
        position: absolute;
        border-radius: 50% 50% 50% 50%/76% 76% 25% 25%;
      }

      .ship .main {
        width: var(--ship-size);
        height: calc(var(--ship-size) * 1.5);
        box-shadow: inset rgba(0, 0, 0, 0.15) -0.5vmin 0 2vmin 0;
      }
      .ship .main:before {
        bottom: 80%;
        width: 100%;
        height: 75%;
        background-color: inherit;
        box-shadow: inset rgba(0, 0, 0, 0.15) -0.5vmin 1vmin 1vmin 0;
      }
      .ship .main:after {
        content: "";
        position: absolute;
        bottom: 75%;
        left: 0;
        right: 0;
        margin: auto;
        border: calc(var(--ship-size) / 15) solid var(--ship-window-trim-color);
        width: calc(var(--ship-size) / 1.8);
        height: calc(var(--ship-size) / 1.8);
        box-shadow:
          inset rgba(0, 0, 0, 0.075) -2vmin -2vmin 0 0,
          inset rgba(0, 0, 0, 0.1) -1vmin -1.5vmin 0 0;
        border-radius: 100%;
      }

      .ship .side {
        width: calc(var(--ship-size) / 3);
        height: var(--ship-size);
        box-shadow:
          inset rgba(0, 0, 0, 0.1) -0.5vmin 0 1vmin 0,
          inset rgba(0, 0, 0, 0.1) 0.5vmin 0 1vmin 0;
      }
      .ship .side:before {
        bottom: 90%;
        width: 100%;
        height: 35%;
        background-color: var(--ship-cap-color);
        box-shadow:
          inset rgba(0, 0, 0, 0.2) -0.5vmin 1vmin 1vmin 0,
          inset rgba(255, 255, 255, 0.2) 0.5vmin 1vmin 1vmin 0;
      }
      .ship .side.left {
        left: 1px;
      }
      .ship .side.right {
        right: 1px;
      }

      .ship .wing {
        position: absolute;
        bottom: 2vmin;
        background-color: var(--ship-wing-color);
        width: calc(var(--ship-size) / 2);
        height: calc(var(--ship-size) / 1.5);
        z-index: 1;
        box-shadow:
          inset rgba(0, 0, 0, 0.1) -0.5vmin 1vmin 1vmin 0,
          inset rgba(255, 255, 255, 0.1) 0.5vmin 1vmin 1vmin 0;
      }
      .ship .wing.left {
        right: 100%;
        border-radius: 100% 0 10% 10%;
      }
      .ship .wing.right {
        left: 100%;
        border-radius: 0 100% 10% 10%;
      }

      .ship .booster {
        position: absolute;
        top: 80%;
        left: 0;
        right: 0;
        margin: auto;
        width: calc(var(--ship-size) / 1.2);
        height: calc(var(--ship-size) / 2.5);
        background-color: var(--ship-booster-color);
        border-radius: 0 0 50% 50%/76% 76% 35% 35%;
        z-index: -1;
        box-shadow:
          inset rgba(0, 0, 0, 0.3) -0.5vmin 1vmin 1vmin 0,
          inset rgba(255, 255, 255, 0.3) 0.5vmin 1vmin 1vmin 0,
          black 0 0 2vmin;
      }

      .ship .exhaust {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        margin: auto;
        width: calc(var(--ship-size) / 1.4);
        height: 80%;
        border-radius: 0 0 100% 100%;
        background-image: linear-gradient(to bottom, yellow, transparent 70%);
        z-index: -2;
        transform-origin: 50% 0;
        animation: exhaust 0.1s linear alternate infinite;
      }

      .stars {
        position: absolute;
        top: 0;
        left: 0;
      }
      .stars:before,
      .stars:after {
        content: "";
        position: absolute;
        width: 100%;
        height: 100%;
        animation: stars linear infinite;
        transform: translateY(-100vh);
      }
      .stars-sm {
        width: 1px;
        height: 1px;
      }
      .stars-sm:before,
      .stars-sm:after {
        box-shadow:
          46vw 155vh var(--star-color),
          186vw 46vh var(--star-color),
          60vw 85vh var(--star-color),
          165vw 22vh var(--star-color),
          69vw 63vh var(--star-color),
          149vw 37vh var(--star-color),
          88vw 1vh var(--star-color),
          18vw 164vh var(--star-color),
          176vw 76vh var(--star-color),
          93vw 40vh var(--star-color),
          42vw 89vh var(--star-color),
          195vw 16vh var(--star-color),
          96vw 165vh var(--star-color),
          15vw 95vh var(--star-color),
          104vw 165vh var(--star-color),
          171vw 181vh var(--star-color),
          18vw 122vh var(--star-color),
          111vw 107vh var(--star-color),
          18vw 159vh var(--star-color),
          80vw 164vh var(--star-color),
          185vw 20vh var(--star-color),
          12vw 102vh var(--star-color),
          48vw 174vh var(--star-color),
          9vw 48vh var(--star-color),
          139vw 190vh var(--star-color),
          26vw 80vh var(--star-color),
          2vw 142vh var(--star-color),
          113vw 27vh var(--star-color),
          96vw 42vh var(--star-color),
          174vw 133vh var(--star-color),
          12vw 129vh var(--star-color),
          186vw 150vh var(--star-color),
          114vw 160vh var(--star-color),
          2vw 42vh var(--star-color),
          98vw 115vh var(--star-color),
          157vw 177vh var(--star-color),
          151vw 8vh var(--star-color),
          113vw 23vh var(--star-color),
          60vw 185vh var(--star-color),
          130vw 113vh var(--star-color),
          111vw 188vh var(--star-color),
          59vw 68vh var(--star-color),
          118vw 157vh var(--star-color),
          153vw 46vh var(--star-color),
          115vw 32vh var(--star-color),
          137vw 68vh var(--star-color),
          68vw 113vh var(--star-color),
          168vw 25vh var(--star-color),
          42vw 148vh var(--star-color),
          157vw 185vh var(--star-color),
          13vw 108vh var(--star-color),
          127vw 166vh var(--star-color),
          178vw 99vh var(--star-color),
          144vw 167vh var(--star-color),
          131vw 168vh var(--star-color),
          64vw 148vh var(--star-color),
          172vw 114vh var(--star-color),
          67vw 53vh var(--star-color),
          179vw 175vh var(--star-color),
          32vw 30vh var(--star-color),
          12vw 117vh var(--star-color),
          105vw 166vh var(--star-color),
          178vw 157vh var(--star-color),
          27vw 65vh var(--star-color),
          193vw 41vh var(--star-color),
          42vw 75vh var(--star-color),
          156vw 65vh var(--star-color),
          52vw 95vh var(--star-color),
          125vw 83vh var(--star-color),
          172vw 167vh var(--star-color),
          66vw 8vh var(--star-color),
          166vw 75vh var(--star-color),
          49vw 160vh var(--star-color),
          167vw 92vh var(--star-color),
          162vw 194vh var(--star-color),
          98vw 58vh var(--star-color),
          56vw 136vh var(--star-color),
          181vw 157vh var(--star-color),
          18vw 151vh var(--star-color),
          157vw 182vh var(--star-color),
          88vw 81vh var(--star-color),
          40vw 178vh var(--star-color),
          89vw 134vh var(--star-color),
          124vw 40vh var(--star-color),
          85vw 101vh var(--star-color),
          20vw 41vh var(--star-color),
          31vw 37vh var(--star-color),
          36vw 84vh var(--star-color),
          21vw 93vh var(--star-color),
          145vw 22vh var(--star-color),
          63vw 186vh var(--star-color),
          57vw 123vh var(--star-color),
          132vw 119vh var(--star-color),
          181vw 165vh var(--star-color),
          81vw 158vh var(--star-color),
          86vw 94vh var(--star-color),
          184vw 109vh var(--star-color),
          67vw 158vh var(--star-color),
          51vw 184vh var(--star-color),
          134vw 87vh var(--star-color),
          171vw 82vh var(--star-color),
          3vw 95vh var(--star-color),
          33vw 48vh var(--star-color),
          197vw 161vh var(--star-color),
          64vw 135vh var(--star-color),
          151vw 86vh var(--star-color),
          178vw 132vh var(--star-color),
          42vw 65vh var(--star-color),
          191vw 60vh var(--star-color),
          43vw 48vh var(--star-color),
          194vw 10vh var(--star-color),
          36vw 59vh var(--star-color),
          170vw 143vh var(--star-color),
          53vw 39vh var(--star-color),
          94vw 166vh var(--star-color),
          181vw 71vh var(--star-color),
          47vw 156vh var(--star-color),
          32vw 49vh var(--star-color),
          166vw 75vh var(--star-color),
          99vw 57vh var(--star-color),
          190vw 63vh var(--star-color),
          30vw 65vh var(--star-color),
          85vw 193vh var(--star-color),
          141vw 146vh var(--star-color),
          127vw 185vh var(--star-color),
          17vw 155vh var(--star-color),
          25vw 176vh var(--star-color),
          98vw 82vh var(--star-color),
          100vw 173vh var(--star-color),
          104vw 139vh var(--star-color),
          6vw 18vh var(--star-color),
          17vw 32vh var(--star-color),
          184vw 193vh var(--star-color),
          52vw 45vh var(--star-color),
          187vw 158vh var(--star-color),
          131vw 198vh var(--star-color),
          25vw 3vh var(--star-color),
          161vw 64vh var(--star-color),
          72vw 97vh var(--star-color),
          137vw 128vh var(--star-color),
          31vw 175vh var(--star-color),
          166vw 164vh var(--star-color),
          184vw 85vh var(--star-color),
          42vw 180vh var(--star-color),
          99vw 107vh var(--star-color),
          38vw 20vh var(--star-color),
          198vw 180vh var(--star-color),
          23vw 77vh var(--star-color),
          87vw 94vh var(--star-color),
          200vw 60vh var(--star-color),
          144vw 25vh var(--star-color),
          31vw 161vh var(--star-color),
          172vw 8vh var(--star-color),
          3vw 108vh var(--star-color),
          83vw 109vh var(--star-color),
          37vw 52vh var(--star-color),
          19vw 41vh var(--star-color),
          148vw 84vh var(--star-color),
          150vw 35vh var(--star-color),
          101vw 163vh var(--star-color),
          104vw 49vh var(--star-color),
          27vw 200vh var(--star-color),
          14vw 122vh var(--star-color),
          103vw 175vh var(--star-color),
          78vw 100vh var(--star-color),
          9vw 95vh var(--star-color),
          109vw 97vh var(--star-color),
          101vw 16vh var(--star-color),
          190vw 138vh var(--star-color),
          14vw 161vh var(--star-color),
          85vw 177vh var(--star-color),
          44vw 171vh var(--star-color),
          95vw 98vh var(--star-color),
          3vw 160vh var(--star-color),
          99vw 177vh var(--star-color),
          50vw 9vh var(--star-color),
          4vw 56vh var(--star-color),
          78vw 37vh var(--star-color),
          12vw 8vh var(--star-color),
          182vw 200vh var(--star-color),
          55vw 53vh var(--star-color),
          199vw 105vh var(--star-color),
          146vw 56vh var(--star-color),
          107vw 155vh var(--star-color),
          87vw 90vh var(--star-color),
          190vw 138vh var(--star-color),
          3vw 127vh var(--star-color),
          155vw 85vh var(--star-color),
          142vw 148vh var(--star-color),
          197vw 158vh var(--star-color),
          67vw 138vh var(--star-color),
          36vw 57vh var(--star-color),
          59vw 126vh var(--star-color),
          48vw 128vh var(--star-color),
          176vw 101vh var(--star-color),
          37vw 152vh var(--star-color),
          195vw 38vh var(--star-color),
          183vw 71vh var(--star-color),
          188vw 142vh var(--star-color),
          99vw 21vh var(--star-color),
          41vw 123vh var(--star-color),
          161vw 6vh var(--star-color),
          18vw 61vh var(--star-color),
          115vw 58vh var(--star-color),
          81vw 124vh var(--star-color),
          183vw 120vh var(--star-color),
          19vw 116vh var(--star-color),
          169vw 24vh var(--star-color),
          103vw 109vh var(--star-color),
          176vw 104vh var(--star-color),
          180vw 132vh var(--star-color),
          8vw 149vh var(--star-color),
          188vw 32vh var(--star-color),
          54vw 130vh var(--star-color),
          75vw 38vh var(--star-color),
          55vw 174vh var(--star-color),
          148vw 86vh var(--star-color),
          50vw 124vh var(--star-color),
          81vw 98vh var(--star-color),
          141vw 71vh var(--star-color),
          194vw 114vh var(--star-color),
          41vw 114vh var(--star-color),
          137vw 146vh var(--star-color),
          41vw 179vh var(--star-color),
          40vw 47vh var(--star-color),
          135vw 178vh var(--star-color),
          192vw 170vh var(--star-color),
          118vw 166vh var(--star-color),
          107vw 49vh var(--star-color),
          25vw 72vh var(--star-color),
          51vw 61vh var(--star-color),
          40vw 178vh var(--star-color),
          97vw 75vh var(--star-color),
          22vw 119vh var(--star-color),
          31vw 122vh var(--star-color),
          126vw 47vh var(--star-color),
          162vw 43vh var(--star-color),
          185vw 18vh var(--star-color),
          122vw 54vh var(--star-color),
          78vw 107vh var(--star-color),
          13vw 104vh var(--star-color),
          96vw 35vh var(--star-color),
          144vw 112vh var(--star-color),
          131vw 75vh var(--star-color),
          23vw 108vh var(--star-color),
          121vw 139vh var(--star-color),
          125vw 194vh var(--star-color),
          84vw 191vh var(--star-color),
          113vw 108vh var(--star-color),
          168vw 24vh var(--star-color),
          71vw 87vh var(--star-color),
          43vw 72vh var(--star-color),
          158vw 77vh var(--star-color),
          93vw 190vh var(--star-color),
          187vw 41vh var(--star-color),
          151vw 160vh var(--star-color),
          41vw 58vh var(--star-color),
          155vw 8vh var(--star-color),
          149vw 122vh var(--star-color),
          64vw 84vh var(--star-color),
          71vw 185vh var(--star-color),
          56vw 136vh var(--star-color),
          148vw 68vh var(--star-color),
          197vw 27vh var(--star-color),
          124vw 116vh var(--star-color),
          49vw 10vh var(--star-color),
          49vw 150vh var(--star-color),
          98vw 198vh var(--star-color),
          31vw 124vh var(--star-color),
          190vw 14vh var(--star-color),
          7vw 51vh var(--star-color),
          200vw 81vh var(--star-color),
          14vw 139vh var(--star-color),
          92vw 185vh var(--star-color),
          188vw 119vh var(--star-color),
          123vw 179vh var(--star-color),
          23vw 50vh var(--star-color),
          28vw 2vh var(--star-color),
          54vw 124vh var(--star-color),
          15vw 57vh var(--star-color),
          72vw 41vh var(--star-color),
          72vw 81vh var(--star-color),
          84vw 84vh var(--star-color),
          106vw 156vh var(--star-color),
          47vw 13vh var(--star-color),
          84vw 160vh var(--star-color),
          200vw 95vh var(--star-color),
          86vw 135vh var(--star-color),
          123vw 75vh var(--star-color),
          197vw 146vh var(--star-color),
          18vw 98vh var(--star-color),
          45vw 123vh var(--star-color),
          113vw 108vh var(--star-color),
          57vw 85vh var(--star-color),
          53vw 126vh var(--star-color),
          81vw 176vh var(--star-color),
          183vw 186vh var(--star-color),
          31vw 173vh var(--star-color),
          170vw 36vh var(--star-color),
          128vw 134vh var(--star-color),
          182vw 31vh var(--star-color),
          106vw 189vh var(--star-color),
          196vw 18vh var(--star-color),
          87vw 175vh var(--star-color),
          129vw 161vh var(--star-color),
          6vw 40vh var(--star-color),
          50vw 163vh var(--star-color),
          143vw 87vh var(--star-color),
          24vw 50vh var(--star-color),
          132vw 146vh var(--star-color),
          24vw 82vh var(--star-color),
          44vw 70vh var(--star-color),
          151vw 45vh var(--star-color),
          164vw 190vh var(--star-color),
          170vw 11vh var(--star-color),
          133vw 46vh var(--star-color),
          70vw 92vh var(--star-color),
          107vw 80vh var(--star-color),
          51vw 175vh var(--star-color),
          60vw 20vh var(--star-color),
          55vw 113vh var(--star-color),
          41vw 179vh var(--star-color),
          82vw 39vh var(--star-color),
          131vw 190vh var(--star-color),
          158vw 16vh var(--star-color),
          93vw 120vh var(--star-color),
          43vw 169vh var(--star-color),
          169vw 92vh var(--star-color),
          175vw 20vh var(--star-color),
          187vw 13vh var(--star-color),
          172vw 144vh var(--star-color),
          67vw 78vh var(--star-color),
          122vw 50vh var(--star-color),
          171vw 153vh var(--star-color),
          86vw 76vh var(--star-color),
          54vw 170vh var(--star-color),
          108vw 147vh var(--star-color),
          140vw 105vh var(--star-color),
          137vw 27vh var(--star-color),
          48vw 145vh var(--star-color),
          51vw 82vh var(--star-color),
          121vw 57vh var(--star-color),
          36vw 91vh var(--star-color),
          159vw 105vh var(--star-color),
          40vw 100vh var(--star-color),
          20vw 181vh var(--star-color),
          98vw 54vh var(--star-color),
          71vw 163vh var(--star-color),
          176vw 7vh var(--star-color),
          57vw 6vh var(--star-color),
          28vw 26vh var(--star-color),
          192vw 124vh var(--star-color),
          168vw 62vh var(--star-color),
          60vw 51vh var(--star-color),
          101vw 137vh var(--star-color),
          64vw 186vh var(--star-color),
          144vw 112vh var(--star-color),
          18vw 33vh var(--star-color),
          31vw 103vh var(--star-color),
          42vw 20vh var(--star-color),
          146vw 146vh var(--star-color),
          85vw 17vh var(--star-color),
          77vw 195vh var(--star-color),
          97vw 45vh var(--star-color),
          64vw 147vh var(--star-color),
          119vw 64vh var(--star-color),
          68vw 128vh var(--star-color),
          120vw 153vh var(--star-color),
          105vw 191vh var(--star-color),
          183vw 34vh var(--star-color),
          183vw 117vh var(--star-color),
          113vw 60vh var(--star-color),
          117vw 85vh var(--star-color),
          67vw 165vh var(--star-color),
          190vw 21vh var(--star-color),
          147vw 83vh var(--star-color),
          92vw 125vh var(--star-color),
          52vw 87vh var(--star-color),
          141vw 135vh var(--star-color),
          102vw 116vh var(--star-color),
          111vw 125vh var(--star-color),
          102vw 3vh var(--star-color),
          136vw 148vh var(--star-color),
          173vw 185vh var(--star-color),
          99vw 38vh var(--star-color),
          151vw 144vh var(--star-color),
          15vw 54vh var(--star-color),
          197vw 6vh var(--star-color),
          71vw 158vh var(--star-color),
          160vw 166vh var(--star-color),
          89vw 34vh var(--star-color),
          3vw 128vh var(--star-color),
          163vw 83vh var(--star-color),
          54vw 8vh var(--star-color),
          192vw 6vh var(--star-color),
          146vw 176vh var(--star-color),
          135vw 116vh var(--star-color),
          130vw 138vh var(--star-color),
          89vw 106vh var(--star-color),
          24vw 96vh var(--star-color),
          43vw 160vh var(--star-color),
          182vw 98vh var(--star-color),
          185vw 169vh var(--star-color),
          32vw 78vh var(--star-color),
          171vw 35vh var(--star-color),
          200vw 66vh var(--star-color),
          11vw 2vh var(--star-color),
          46vw 131vh var(--star-color),
          171vw 154vh var(--star-color),
          24vw 106vh var(--star-color),
          18vw 4vh var(--star-color),
          17vw 81vh var(--star-color),
          41vw 159vh var(--star-color),
          4vw 71vh var(--star-color),
          49vw 144vh var(--star-color),
          193vw 106vh var(--star-color),
          171vw 194vh var(--star-color),
          46vw 170vh var(--star-color),
          69vw 77vh var(--star-color),
          7vw 155vh var(--star-color),
          137vw 62vh var(--star-color),
          70vw 8vh var(--star-color),
          47vw 80vh var(--star-color),
          102vw 180vh var(--star-color),
          25vw 162vh var(--star-color),
          139vw 121vh var(--star-color),
          22vw 147vh var(--star-color),
          128vw 9vh var(--star-color),
          61vw 130vh var(--star-color),
          22vw 169vh var(--star-color),
          167vw 168vh var(--star-color),
          14vw 45vh var(--star-color),
          178vw 187vh var(--star-color),
          189vw 131vh var(--star-color),
          48vw 106vh var(--star-color),
          180vw 57vh var(--star-color),
          108vw 154vh var(--star-color),
          50vw 80vh var(--star-color),
          76vw 87vh var(--star-color),
          39vw 156vh var(--star-color),
          96vw 98vh var(--star-color),
          88vw 92vh var(--star-color),
          107vw 162vh var(--star-color),
          140vw 60vh var(--star-color),
          47vw 200vh var(--star-color),
          182vw 163vh var(--star-color),
          4vw 131vh var(--star-color),
          64vw 120vh var(--star-color),
          127vw 31vh var(--star-color),
          183vw 137vh var(--star-color),
          33vw 95vh var(--star-color),
          61vw 199vh var(--star-color),
          182vw 184vh var(--star-color),
          93vw 193vh var(--star-color),
          98vw 139vh var(--star-color),
          58vw 94vh var(--star-color),
          144vw 48vh var(--star-color),
          61vw 172vh var(--star-color),
          164vw 127vh var(--star-color),
          45vw 54vh var(--star-color),
          168vw 1vh var(--star-color),
          161vw 11vh var(--star-color),
          183vw 117vh var(--star-color),
          35vw 58vh var(--star-color),
          25vw 122vh var(--star-color),
          102vw 100vh var(--star-color),
          122vw 105vh var(--star-color),
          167vw 184vh var(--star-color),
          140vw 38vh var(--star-color),
          104vw 186vh var(--star-color),
          159vw 35vh var(--star-color),
          180vw 54vh var(--star-color),
          193vw 180vh var(--star-color),
          49vw 81vh var(--star-color),
          18vw 148vh var(--star-color),
          120vw 109vh var(--star-color),
          51vw 69vh var(--star-color),
          184vw 53vh var(--star-color),
          155vw 55vh var(--star-color),
          187vw 137vh var(--star-color),
          159vw 109vh var(--star-color),
          8vw 21vh var(--star-color),
          179vw 107vh var(--star-color),
          161vw 24vh var(--star-color),
          184vw 174vh var(--star-color),
          172vw 127vh var(--star-color),
          110vw 117vh var(--star-color),
          28vw 108vh var(--star-color),
          185vw 149vh var(--star-color),
          123vw 30vh var(--star-color),
          145vw 175vh var(--star-color),
          160vw 90vh var(--star-color),
          110vw 133vh var(--star-color),
          126vw 29vh var(--star-color),
          153vw 114vh var(--star-color),
          50vw 99vh var(--star-color),
          172vw 194vh var(--star-color),
          87vw 102vh var(--star-color),
          22vw 149vh var(--star-color),
          193vw 102vh var(--star-color);
        animation-duration: var(--stars-sm-speed);
      }
      .stars-sm:after {
        animation-delay: calc(var(--stars-sm-speed) / -2);
      }
      .stars-md {
        width: 2px;
        height: 2px;
      }
      .stars-md:before,
      .stars-md:after {
        box-shadow:
          156vw 17vh var(--star-color),
          50vw 42vh var(--star-color),
          2vw 149vh var(--star-color),
          55vw 6vh var(--star-color),
          75vw 109vh var(--star-color),
          127vw 22vh var(--star-color),
          42vw 75vh var(--star-color),
          44vw 81vh var(--star-color),
          87vw 4vh var(--star-color),
          22vw 84vh var(--star-color),
          40vw 20vh var(--star-color),
          118vw 5vh var(--star-color),
          5vw 196vh var(--star-color),
          185vw 59vh var(--star-color),
          129vw 60vh var(--star-color),
          199vw 187vh var(--star-color),
          168vw 20vh var(--star-color),
          116vw 89vh var(--star-color),
          180vw 144vh var(--star-color),
          37vw 134vh var(--star-color),
          96vw 8vh var(--star-color),
          7vw 92vh var(--star-color),
          52vw 37vh var(--star-color),
          120vw 33vh var(--star-color),
          83vw 3vh var(--star-color),
          185vw 79vh var(--star-color),
          116vw 40vh var(--star-color),
          103vw 78vh var(--star-color),
          186vw 174vh var(--star-color),
          90vw 33vh var(--star-color),
          126vw 68vh var(--star-color),
          52vw 147vh var(--star-color),
          72vw 95vh var(--star-color),
          198vw 112vh var(--star-color),
          97vw 188vh var(--star-color),
          69vw 145vh var(--star-color),
          17vw 48vh var(--star-color),
          116vw 137vh var(--star-color),
          166vw 119vh var(--star-color),
          159vw 178vh var(--star-color),
          173vw 86vh var(--star-color),
          167vw 22vh var(--star-color),
          48vw 120vh var(--star-color),
          185vw 77vh var(--star-color),
          138vw 8vh var(--star-color),
          100vw 84vh var(--star-color),
          166vw 188vh var(--star-color),
          105vw 106vh var(--star-color),
          43vw 135vh var(--star-color),
          159vw 109vh var(--star-color),
          30vw 33vh var(--star-color),
          178vw 131vh var(--star-color),
          85vw 123vh var(--star-color),
          140vw 58vh var(--star-color),
          23vw 127vh var(--star-color),
          152vw 176vh var(--star-color),
          143vw 120vh var(--star-color),
          93vw 90vh var(--star-color),
          22vw 157vh var(--star-color),
          131vw 116vh var(--star-color),
          98vw 168vh var(--star-color),
          37vw 55vh var(--star-color),
          55vw 171vh var(--star-color),
          156vw 166vh var(--star-color),
          104vw 110vh var(--star-color),
          133vw 149vh var(--star-color),
          78vw 186vh var(--star-color),
          130vw 4vh var(--star-color),
          156vw 147vh var(--star-color),
          65vw 167vh var(--star-color),
          17vw 20vh var(--star-color),
          16vw 104vh var(--star-color),
          142vw 156vh var(--star-color),
          188vw 45vh var(--star-color),
          4vw 10vh var(--star-color),
          71vw 106vh var(--star-color),
          110vw 120vh var(--star-color),
          1vw 175vh var(--star-color),
          42vw 32vh var(--star-color),
          170vw 52vh var(--star-color),
          50vw 140vh var(--star-color),
          139vw 164vh var(--star-color),
          111vw 194vh var(--star-color),
          182vw 162vh var(--star-color),
          165vw 181vh var(--star-color),
          45vw 185vh var(--star-color),
          172vw 138vh var(--star-color),
          14vw 14vh var(--star-color),
          99vw 57vh var(--star-color),
          70vw 39vh var(--star-color),
          99vw 22vh var(--star-color),
          149vw 142vh var(--star-color),
          7vw 37vh var(--star-color),
          2vw 107vh var(--star-color),
          112vw 168vh var(--star-color),
          105vw 174vh var(--star-color),
          7vw 6vh var(--star-color),
          23vw 43vh var(--star-color),
          55vw 99vh var(--star-color),
          163vw 102vh var(--star-color),
          129vw 200vh var(--star-color),
          136vw 139vh var(--star-color),
          123vw 28vh var(--star-color),
          111vw 194vh var(--star-color),
          6vw 144vh var(--star-color),
          155vw 173vh var(--star-color),
          50vw 43vh var(--star-color),
          114vw 120vh var(--star-color),
          146vw 92vh var(--star-color),
          115vw 129vh var(--star-color),
          3vw 116vh var(--star-color),
          106vw 179vh var(--star-color),
          149vw 119vh var(--star-color),
          119vw 57vh var(--star-color),
          193vw 9vh var(--star-color),
          193vw 185vh var(--star-color),
          5vw 60vh var(--star-color),
          15vw 20vh var(--star-color),
          149vw 38vh var(--star-color),
          29vw 25vh var(--star-color),
          67vw 14vh var(--star-color),
          138vw 179vh var(--star-color),
          186vw 27vh var(--star-color),
          143vw 1vh var(--star-color),
          30vw 128vh var(--star-color),
          169vw 180vh var(--star-color),
          193vw 22vh var(--star-color),
          32vw 17vh var(--star-color),
          56vw 185vh var(--star-color),
          80vw 115vh var(--star-color),
          48vw 130vh var(--star-color),
          43vw 79vh var(--star-color),
          25vw 55vh var(--star-color),
          95vw 46vh var(--star-color),
          40vw 161vh var(--star-color),
          190vw 13vh var(--star-color),
          188vw 156vh var(--star-color),
          197vw 66vh var(--star-color),
          128vw 104vh var(--star-color),
          37vw 17vh var(--star-color),
          51vw 59vh var(--star-color),
          26vw 123vh var(--star-color),
          161vw 135vh var(--star-color),
          158vw 23vh var(--star-color),
          179vw 115vh var(--star-color),
          105vw 62vh var(--star-color),
          31vw 31vh var(--star-color),
          110vw 126vh var(--star-color),
          104vw 58vh var(--star-color),
          22vw 130vh var(--star-color),
          42vw 173vh var(--star-color),
          174vw 20vh var(--star-color),
          68vw 128vh var(--star-color),
          166vw 72vh var(--star-color),
          120vw 98vh var(--star-color),
          56vw 1vh var(--star-color),
          85vw 31vh var(--star-color),
          173vw 72vh var(--star-color),
          35vw 186vh var(--star-color),
          29vw 4vh var(--star-color),
          9vw 157vh var(--star-color),
          148vw 140vh var(--star-color),
          56vw 53vh var(--star-color),
          171vw 82vh var(--star-color),
          8vw 66vh var(--star-color),
          151vw 45vh var(--star-color),
          106vw 44vh var(--star-color),
          100vw 120vh var(--star-color),
          146vw 92vh var(--star-color),
          152vw 166vh var(--star-color),
          54vw 143vh var(--star-color),
          184vw 15vh var(--star-color),
          134vw 79vh var(--star-color),
          120vw 132vh var(--star-color),
          98vw 127vh var(--star-color),
          9vw 161vh var(--star-color),
          43vw 109vh var(--star-color),
          56vw 93vh var(--star-color),
          70vw 136vh var(--star-color),
          118vw 62vh var(--star-color),
          2vw 89vh var(--star-color),
          83vw 26vh var(--star-color),
          48vw 200vh var(--star-color),
          88vw 93vh var(--star-color),
          181vw 58vh var(--star-color),
          170vw 101vh var(--star-color),
          94vw 102vh var(--star-color),
          101vw 46vh var(--star-color),
          165vw 142vh var(--star-color),
          34vw 73vh var(--star-color),
          54vw 94vh var(--star-color),
          193vw 116vh var(--star-color),
          29vw 146vh var(--star-color),
          68vw 149vh var(--star-color),
          59vw 179vh var(--star-color),
          21vw 45vh var(--star-color),
          73vw 39vh var(--star-color),
          175vw 108vh var(--star-color),
          193vw 81vh var(--star-color),
          5vw 25vh var(--star-color);
        animation-duration: var(--stars-md-speed);
      }
      .stars-md:after {
        animation-delay: calc(var(--stars-md-speed) / -2);
      }
      .stars-lg {
        width: 4px;
        height: 4px;
      }
      .stars-lg:before,
      .stars-lg:after {
        box-shadow:
          137vw 87vh var(--star-color),
          4vw 149vh var(--star-color),
          195vw 8vh var(--star-color),
          115vw 70vh var(--star-color),
          198vw 47vh var(--star-color),
          51vw 52vh var(--star-color),
          157vw 47vh var(--star-color),
          82vw 59vh var(--star-color),
          176vw 179vh var(--star-color),
          34vw 123vh var(--star-color),
          81vw 123vh var(--star-color),
          134vw 8vh var(--star-color),
          7vw 166vh var(--star-color),
          126vw 184vh var(--star-color),
          2vw 196vh var(--star-color),
          56vw 43vh var(--star-color),
          188vw 30vh var(--star-color),
          135vw 40vh var(--star-color),
          70vw 126vh var(--star-color),
          127vw 162vh var(--star-color),
          159vw 121vh var(--star-color),
          57vw 69vh var(--star-color),
          50vw 6vh var(--star-color),
          146vw 188vh var(--star-color),
          50vw 10vh var(--star-color),
          77vw 71vh var(--star-color),
          117vw 86vh var(--star-color),
          131vw 39vh var(--star-color),
          91vw 116vh var(--star-color),
          20vw 30vh var(--star-color),
          180vw 169vh var(--star-color),
          81vw 20vh var(--star-color),
          197vw 27vh var(--star-color),
          100vw 109vh var(--star-color),
          122vw 8vh var(--star-color),
          31vw 178vh var(--star-color),
          150vw 161vh var(--star-color),
          157vw 132vh var(--star-color),
          175vw 102vh var(--star-color),
          94vw 43vh var(--star-color),
          58vw 51vh var(--star-color),
          92vw 90vh var(--star-color),
          21vw 27vh var(--star-color),
          35vw 122vh var(--star-color),
          114vw 49vh var(--star-color),
          176vw 187vh var(--star-color),
          82vw 194vh var(--star-color),
          123vw 171vh var(--star-color),
          41vw 135vh var(--star-color),
          143vw 112vh var(--star-color);
        animation-duration: var(--stars-lg-speed);
      }
      .stars-lg:after {
        animation-delay: calc(var(--stars-lg-speed) / -2);
      }

      @keyframes stars {
        0% {
          opacity: 0;
        }
        20% {
          opacity: 1;
        }
        80% {
          opacity: 1;
        }
        100% {
          opacity: 0;
          transform: translateY(0);
        }
      }
      @keyframes exhaust {
        to {
          transform: scaleX(0.98) translateY(-1vmin);
        }
      }
      @keyframes speed-up-exhaust {
        from {
          transform: scale(0.98, 1);
        }
        to {
          transform: scale(0.96, 1.5);
        }
      }
      @keyframes speed-up-ship {
        from {
          transform: translateY(-5%);
        }
        to {
          transform: translateY(-3%);
        }
      }
    </style>
  </head>
  <body>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="hover-area"></div>
    <div class="star-field">
      <div class="stars stars-sm"></div>
      <div class="stars stars-md"></div>
      <div class="stars stars-lg"></div>
    </div>
    <div class="ship">
      <div class="wrapper">
        <div class="body side left"></div>
        <div class="body main">
          <div class="wing left"></div>
          <div class="wing right"></div>
          <div class="booster"></div>
          <div class="exhaust"></div>
        </div>
        <div class="body side right"></div>
      </div>
    </div>
  </body>
</html>