webcomponent实现太阳系行星运行轨迹交互效果代码

代码语言:html

所属分类:其他

代码描述:webcomponent实现太阳系行星运行轨迹交互效果代码

代码标签: webcomponent 太阳系 行星 运行 轨迹 交互

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

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
  
  
  
<style>
@layer reset, token, pen;
@layer pen {
  html {
    overflow: auto;
    scrollbar-width: none;
  }

  body {
    display: flex;
    flex-direction: column;
    font-family: Space Mono, monospace;
  }

  ow-system {
    --cycle: 1320s;
    --cycle: 120s;
    --unit: calc(var(--scale, 1) * 95vmin);
    --sun-glow: #ba702f;
    --orbit-border-width: 1px;
    position: relative;
    isolation: isolate;
    flex: 1;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
    justify-content: center;
    align-items: center;
    block-size: calc(1 * var(--unit));
    inline-size: calc(1 * var(--unit));
    aspect-ratio: 1;
    margin: auto;
    background: radial-gradient(circle at center, var(--sun-glow), transparent 35%) no-repeat center/var(--unit) var(--unit);
    transition: --scale 5ms linear;
    -webkit-animation: --sun-glow var(--cycle) linear infinite;
            animation: --sun-glow var(--cycle) linear infinite;
  }
  ow-system::before {
    position: absolute;
    inset: 0;
    z-index: -1;
    background: url(https://res.cloudinary.com/chriskirknielsen/image/upload/c_crop,ar_1:1/v1729476626/image_uw02rg.png) no-repeat 50% 51%/contain;
    transform: translateY(0.375%);
    opacity: 0.5;
  }

  #sun {
    --orbit-radius: 0.00000000000000001;
    --body-radius: 0.05;
    --orbital-speed: 0;
    --w-color: #f6ab48;
    -webkit-animation: --orbit calc(var(--cycle) * 0.1) linear infinite;
            animation: --orbit calc(var(--cycle) * 0.1) linear infinite;
  }
  #sun ow-wanderer {
    -webkit-animation: --supernova var(--cycle) linear infinite;
            animation: --supernova var(--cycle) linear infinite;
  }

  #sun-station {
    --orbit-radius: 0.06;
    --body-radius: 0.0075;
    --orbital-speed: 0.9;
    --w-color: gold;
  }

  #hourglass-twins {
    --orbit-radius: 0.105;
    --body-radius: 0.0000001;
    --orbital-speed: 0.091667;
    --w-color: orangered;
    --initial-delay: -8.5s;
  }
  #hourglass-twins > ow-wanderer {
    display: flex;
    justify-content: center;
    align-items: center;
  }
  #hourglass-twins > ow-wanderer:defined[image] {
    --gap: calc(0.0075 * var(--unit));
  }
  #hourglass-twins > ow-wanderer:defined[image]::before {
    content: "";
    position: absolute;
    inset: 50%;
    flex-shrink: 0;
    block-size: var(--gap);
    inline-size: var(--gap);
    margin: auto;
    background: inherit;
    scale: 2;
  }

  #twins {
    --orbit-radius: 0.0075;
    --body-radius: 0.0000001;
    --orbital-speed: 0;
  }

  #ash-twin, #ember-twin {
    --orbit-radius: 0.0075;
    --body-radius: 0.005;
    --orbital-speed: 0;
  }

  #ember-twin {
    --w-offset: 50%;
  }

  #timber-hearth {
    --orbit-radius: 0.18;
    --body-radius: 0.0075;
    --orbital-speed: 0.191667;
    --w-color: greenyellow;
  }

  #attlerock {
    --orbit-radius: 0.0125;
    --body-radius: 0.005;
    --orbital-speed: 0;
    --w-color: slategray;
  }

  #brittle-hollow {
    --orbit-radius: 0.245;
    --body-radius: 0.01;
    --orbital-speed: 0.3;
    --w-color: darkturquoise;
  }

  #hollows-lantern {
    --orbit-radius: 0.015;
    --body-radius: 0.005;
    --orbital-speed: 0;
    --w-color: darkorange;
  }

  #giants-deep {
    --orbit-radius: 0.3425;
    --body-radius: 0.0225;
    --orbital-speed: 0.5;
    --w-color: darkseagreen;
  }

  #orbital-probe-cannon {
    --orbit-radius: 0.025;
    --body-radius: 0.005;
    --orbital-speed: 0;
    --w-color: gold;
    --w-angle: 90deg;
  }

  #dark-bramble {
    --orbit-radius: 0.4175;
    --body-radius: 0.01625;
    --orbital-speed: 0.6667;
    --w-color: darkslateblue;
  }

  #interloper {
    --orbit-radius: 0.278;
    --body-radius: 0.0075;
    --orbit-ratio: 0.575;
    --orbital-speed: 0.441667;
    --tilt-axis: -8.9deg;
    --w-color: cyan;
    --orbit-dir: -1;
    transform-origin: 93.5% 47.6%;
    transform: translate(-41%, 0) rotate(var(--tilt-axis));
  }
  #interloper ow-wanderer {
    --revolution-animation: none;
    offset-rotate: auto -90deg;
  }
  #interloper ow-wanderer, #interloper ow-name {
    -webkit-animation-timing-function: cubic-bezier(0.25, 0.6, 0.75, 0.4);
            animation-timing-function: cubic-bezier(0.25, 0.6, 0.75, 0.4);
  }

  #quantum-moon {
    --orbit-radius: 0.0275;
    --body-radius: 0.0075;
    --orbital-speed: 0.5;
    --w-color: slategray;
    --w-offset: 50%;
  }

  #white-hole-station {
    --orbit-radius: 0.5;
    --body-radius: 0.01625;
    --orbital-speed: 0.85;
    --w-color: gold;
  }

  ow-orbit {
    position: relative;
    z-index: -1;
    pointer-events: none;
    grid-area: 1/1/-1/-1;
    place-self: center;
    display: flex;
    block-size: calc(var(--orbit-radius) * 2 * var(--unit) * var(--orbit-ratio, 1));
    inline-size: calc(var(--orbit-radius) * 2 * var(--unit));
    border: var(--orbit-border-width) solid #8888;
    border-color: color-mix(in oklch, transparent, color-mix(in oklch, var(--fg), var(--w-color)));
    border-radius: 50%;
  }

  ow-wanderer {
    --rev.........完整代码请登录后点击上方下载按钮下载查看

网友评论0