js+css实现可调配置参数的彩色曲线圈圈动画效果代码
代码语言:html
所属分类:动画
代码描述:js+css实现可调配置参数的彩色曲线圈圈动画效果代码
代码标签: js css 配置 参数 彩色 曲线 圈圈 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @layer reset, base, demo; @layer demo { .controls-panel { position: absolute; top: 1rem; right: 1rem; background: rgba(78 170 246 / 0.5); backdrop-filter: blur(4px); border: 1px solid rgba(255 255 255 / 0.35); border-radius: 5px; width: var(--control-panel-width, 2rem); display: grid; grid-template-rows: var(--control-panel-rows, 2rem 0fr); transition: grid-template-rows 300ms ease-in-out var(--delay-reveal, 0ms), width 300ms ease-in-out var(--delay-width, 400ms); } .controls-panel > label { cursor: pointer; margin: 0; transition: rotate 300ms ease-in-out; display: grid; place-content: center end; color: white; } .controls-panel > label:hover > svg { rotate: 90deg; } .controls-panel > label > svg { --toggle-icon-scale: var(--toggle-config-scale, 1); grid-area: 1 / 1; margin-right: 0.25rem; width: 100%; transition: 300ms ease-in-out; scale: var(--toggle-icon-scale, 1); } .controls-panel > label > svg:last-of-type { --toggle-icon-scale: var(--toggle-close-scale, 0); } .controls-panel input[type="checkbox"] { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .controls-panel:has(input[type="checkbox"]:checked) { --control-panel-rows: 2rem 1fr; --control-panel-width: 280px; --delay-reveal: 400ms; --delay-width: 0ms; --toggle-close-scale: 1; --toggle-config-scale: 0; } .controls { overflow: hidden; display: grid; gap: 0.5rem; } .controls > div { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; padding-inline: 1rem; } .controls > div:last-child { margin-bottom: 1rem; } .controls > div > label { font-size: 0.75rem; text-align: right; } input[type="range"] { width: 100%; } /* color picker range slider */ input[type="range"].color-picker { -webkit-appearance: none; width: 100%; height: 6px; border-radius: 5px; background: linear-gradient( to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(360, 100%, 50%) ); outline: none; transition: background 0.2s; } input[type="range"].color-picker { --clr-thumb: black; } input[type="range"].color-picker::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--clr-thumb); border: 2px solid white; cursor: pointer; transition: background 0.2s; } input[type="range"].color-picker::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--clr-thumb); border: 2px solid white; cursor: pointer; transition: background 0.2s; } .wrapper { --inner-duration: 16s; --inner-delay-factor: calc(var(--inner-duration) / 100); --inner-size: 200px; --inner-offset: -100px; --inner-radius: 50%; --outer-duration: calc(var(--inner-duration) * 1.5); --outer-delay-factor: calc(var(--inner-duration) / 5); --clr-even: var(--clr-1, hotpink); --clr-odd: var(--clr-2, steelblue); /* elements to add to controls: - timing function - scale */ --outer-timing-function: linear; --inner-timing-function: ease-in-out; --inner-scale: 1.2; display: grid; place-content: center; } .ani { grid-area: 1 / 1; display: grid; place-content: center; animation: var(--outer-duration) ani-outer var(--outer-timing-function) infinite; animation-delay: calc(var(--outer-delay-factor) * var(--j) * -1); } .ani:nth-child(odd) > div { --clr: var(--clr-odd); } .ani > div { -.........完整代码请登录后点击上方下载按钮下载查看
网友评论0