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