js实现多彩运动路径动画效果代码

代码语言:html

所属分类:动画

代码描述:js实现多彩运动路径动画效果代码

代码标签: 运动 路径 动画 效果

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

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

<head>

  <meta charset="UTF-8">
  

  
  
  
  
<style>
/* Best viewed in Chrome with Fullpage mode :) */

@import "https://fonts.googleapis.com/css2?family=Montserrat:wght@600&display=swap";

.particles{
	--glow-layer: 0 0 0 0 rgba(0, 0, 0, 0);

	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	opacity: 0.85;
}

.particle{
	--shadow-opacity: 0.06;
	--depth-opacity: 0.2;

	position: absolute;
	left: 0;
	top: 0;

	opacity: 1;
	box-sizing: border-box;
	box-shadow: 

		var(--glow-layer),
		1.5015vmin 1.5015vmin 1.5015vmin 0 rgba(0, 0, 0, var(--shadow-opacity)),
		inset 1.5015vmin 1.5015vmin 1.5015vmin 0 rgba(255, 255, 255, var(--depth-opacity)),
		inset -1.5015vmin -1.5015vmin 1.5015vmin 0 rgba(0, 0, 0, var(--depth-opacity));

	transform: translate(0, 0) scale(0) rotate(0);
	animation: trail linear 0.7s var(--i, 0s) forwards;
	will-change: transform, opacity;
}

@keyframes trail{
	10%{
		transform: translate(0, 0) scale(1) rotate(0);
	}
	60%{
		opacity: 1;
	}
	100%{
		transform: translate(var(--shiftX, 0), var(--shiftY, 0)) scale(0) rotate(360deg);
		opacity: 0;
	}
}

.controls{
	position: fixed;
	right: 0;
	top: 0;
	display: inline-block;
	box-sizing: border-box;
	padding: 2vmin;
	text-align: right;
	font-family: 'Montserrat', sans-serif;
	font-size: max(0.8em, 2.5vmin);
}

input{
	position: relative;
	left: 0;
	top: 0;
	opacity: 0;
	margin: 0 -7px; /* a typical Windows checkbox is 14x14 in size */
}

input:checked + label{
	color: var(--accent);
}

input:checked + label::before{
	transform: translateY(30%) scaleX(1);
	transform-origin: left top;
}

input:focus-visible + label{
	outline: 2px solid var(--accent);
	outline-offset: 4px;
}

label{
	position: relative;
	margin: 0 0.6em 1em 0;
	font-weight: 600;
	cursor: pointer;
	transition: color ease 400ms;
	color: var(--text-secondary);
	display: inline-block;
}

label::before{
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	transform: translateY(30%) scaleX(0);
	width: 100%;
	height: 0.72em;
	background-color: currentColor;
	z-index: -1;
	transform-origin: right top;
	transition: transform ease 400ms;
	opacity: 0.4;
}

label:hover{
	color: var(--text);
}

.hint{
	position: absolute;
	right: 5vmin;
	bottom: 0;
	transform: translate(0%, 100%);
	width: max(6.4em, 20vmin);
	min-width: 6.4em;
	max-width: 20vmin;
	pointer-events: none;
	opacity: 0.8;
	overflow: visible;
}

.hint-text{
	color: var(--accent);
	fill: currentColor;
}

.special-arrow{
	stroke: currentColor;
}

body[data-hint-shown='yes'] .hint{
	animation: hide ease 0.3s 0.7s forwards;
}

@keyframes hide{
	to{
		opacity: 0;
	}
}

/* to make things look pretty */
html, body{
	position: relative;
	inset: 0;
	width: 100%;
	min-height: 100vh;
	padding: 0;
	margin: 0;
	display: block;
	overflow: hidden;
}

html{
	background-image: radial-gradient(circle at 50%, #fff, #f9f4fa);
	background-size: 100% 100%;
	background-attachment: fixed;
}

body{
	background-color: transparent;
	--accent: #245ef2;
	--accent-alpha: #245ef2bb;
	--text: #000;
	--text-secondary: #00000093;
}

body::before{
	content: "";
	width: 100%;
	height: 100%;
	position: fixed;
	left: 0;
	top: 0;

	background-image: radial-gradient(circle at 50%, #151515, #000);
	background-size: 100% 100%;
	background-attachment: fixed;

	opacity: 0;
	transition: opacity ease 300ms;
	will-change: opacity;
}

/* I'm not sure but Firefox resolves to a lighter gradient */
@supports (-moz-appearance: none){
	body::before{
		background-image: radial-gradient(circle at 50%, #111, #000);
	}
}

body.glow{
	--accent: #f224da;
	--accent-alpha: #f224dabb;
	--text: #fff;
	--text-secondary: #ffffff93;
}

body.glow::before{
	opacity: 1;
}

body.glow .particles{
	--glow-layer: 0 0 15.015vmin 1.5015vmin currentColor;

	opacity: 1;
	filter: contrast(1.5);
}

::selection{
	color: #fff;
	background-color: var(--accent-alpha);
}

/* Made with Coffee, Care, and Curiosity by @ShadowShahriar */
</style>



</head>

<body>
  <!-- Excited with this project o(^▽^)o -->
<div class="particles"></div>
<div class="shadows"></div>
<div class="controls">
	<input id="toggle-rainbow" type="checkbox" data-changes="rainbow"/>
	<label for="toggle-rainbow">Rainbow</label>

	<input id="toggle-circles" type="checkbox" data-changes="circles"/>
	<label for="toggle-circles">Circles</label>

	<.........完整代码请登录后点击上方下载按钮下载查看

网友评论0