zdog模拟高压电电火花动画效果代码

代码语言:html

所属分类:动画

代码描述:zdog模拟高压电电火花动画效果代码,按住按钮不放即可看到。

代码标签: zdog 模拟 高压电 火花 动画

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

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

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

  
<style>
* {
	box-sizing: border-box;
	padding: 0;
	margin: 0;
}

body {
	color: hsl(180 100% 54%);
	background: hsl(240 13% 9%);
	min-block-size: 100svb;
	display: grid;
	place-items: center;
	font-family: system-ui;
}

div {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	align-items: center;
}

button {
	font-size: 0.9rem;
	font-family: inherit;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	display: block;
	padding: 0.5rem 0.75rem;
	border-radius: 1e5px;
	border: none;
	color: hsl(180 100% 54%);
	background: hsl(240 13% 16%);
}

button:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

button:disabled {
	opacity: 0.7;
}

button:not(:disabled) {
	transform-origin: 50% 80%;
	transition-property: scale, box-shadow;
	transition-duration: 0.07s;
	transition-timing-function: cubic-bezier(0.37, 0, 0.63, 1);
	box-shadow: 0 0 1rem -0.6rem hsl(232 90% 68% / 0.5);
}

button:active {
	box-shadow: 0 0 0 0 hsl(258 92% 62% / 0.5);
	scale: 0.975;
}
</style>

  
  
</head>

<body translate="no">
  <div>
	<canvas style="display: block; inline-size: 100%; max-inline-size: 300px" width="300" height="300"></canvas>

	<button disabled>Strike lightning</button>
</div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/zdog.dist.js"></script>
      <script  >
const { Anchor, Shape } = Zdog;

(() => {
  const canvas = document.querySelector("canvas");
  const context = canvas.getContext("2d");
  const { width, height } = canvas;

  const colors = [
  {
    h: 232,
    s: 90,
    l: 68 },

  {
    h: 220,
    s: 89,
    l: 64 },

  {
    h: 180,
    s: 100,
    l: 54 }];



  const strokes = {
    core: 10,
    lightning: [3, 0.05],
    particle: 1.6 };


  const { h, s, l } = colors[0];
  const { h: h1, s: s1, l: l1 } = colors[1];
  const { h: h2, s: s2, l: l2 } = colors[2];
  const color = `hsl(${h}, ${s}%, ${l}%)`;
  const color1 = `hsl(${h1}, ${s1}%, ${l1}%)`;

  const diameter = Math.min(width, height);

  const PI = Math.PI;
  const TAU = PI * 2;

  const points = Math.sqrt(100);
  const offset = diameter / 2.5;
  const particles = Array(points).
  fill().
  map((_, i, { length }) => {
    const theta = PI * -1 + TAU / length * i;
    return [
    ...Array(points).
    fill().
    map((_, j, { length }) => {
      const a = PI * -1 + TAU / length * j;
      const x = offset * Math.sin(theta) * Math.cos(a);
      const y = offset * Math.sin(theta) * Math.sin(a);
      const z = offset * Math.cos(theta);

      return {
        x,
        y,
        z };

    })];

  }).
  flat();

  const start = 0;
  const end = offset;
  const lines = 3;
  const offsets = [5, 12.........完整代码请登录后点击上方下载按钮下载查看

网友评论0