Knobs实现可调节配置的css物理动画模拟效果代码

代码语言:html

所属分类:动画

代码描述:Knobs实现可调节配置的css物理动画模拟效果代码

代码标签: Knobs 调节 配置 css 物理 动画 模拟

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

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

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

  <meta name="viewport" content="width=device-width, initial-scale=1">
  
  
  
<style>
@layer support, demo;

:root {
  /* configure the physical properties of the element */
  --mass: 1;
  --stiffness: 100;
  --damping: 5;
  --start-velocity: 0; 
  
  /* physics math variables */
  --w0: calc(sqrt(var(--stiffness) / var(--mass)));
  --zeta: calc(var(--damping) / (2 * sqrt(var(--stiffness) * var(--mass))));

  --B: calc((var(--zeta) * var(--w0) + calc(var(--start-velocity) * -1)) / var(--wd)); 
  --wd: calc(var(--w0) * sqrt(1 - var(--zeta) * var(--zeta)));
}

@property --t {
  syntax: '<number>';
  inherits: false;
  initial-value: 0;
}

h1 {
  animation: spring 2s alternate ease-out infinite; 
  
  /* doesn't produce invalid results if --zeta >= 1 */
  --underdamped-factor: calc(
    exp(calc(-1 * var(--t) * var(--zeta) * var(--w0))) * 
    (1 * cos(calc(var(--wd) * var(--t))) + var(--B) * sin(calc(var(--wd) * var(--t))))
  );

  --critically-damped-factor: calc(
    (1 + var(--B) * var(--t)) * exp(calc(-1 * var(--t) * var(--w0)))
  );

  transform: translateY(
    calc(100px * (1 - var(--underdamped-factor)))
  ); 
  
  /* todo: transition --t */
  
/*   transform: translateY(
    calc(100px * (1 - var(--critically-damped-factor)))
  );  */
  
/*   &:hover {
    --t: 1;
  } */
}

@keyframes spring {
  to {
    --t: 1; /* End time of animation */
  }
}

@layer support {
  * {
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0