webgpu实现瓶子装流沙交互重力模拟动画代码

代码语言:html

所属分类:动画

代码描述:webgpu实现瓶子装流沙交互重力模拟动画代码

代码标签: webgpu 瓶子 流沙 交互 重力 模拟 动画 代码

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

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

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


  
  
<style>
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
@property --picker-radius {
	syntax: "<length> | <percentage>";
	inherits: true;
	initial-value: 0px;
}

body {
	--picker-radius: 0px;
	--picker-radius-open: 16vmin;
	--button-radius: 9vmin;
	background: #000;
	overflow: hidden;
	height: 100vh;
}

canvas {
	display: block;
	width: 100dvw;
	height: 100dvh;
	image-rendering: pixelated;
	touch-action: none;
	user-select: none;
}

select,
::picker(select) {
	appearance: base-select;
}

select {
	position: fixed;
	inset: 1.5rem 1.5rem auto auto;
	display: grid;
	place-items: center;
	width: var(--button-radius);
	height: var(--button-radius);
	background: #7a5c2e;
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 100vmin;
	cursor: pointer;
	color: rgba(255, 255, 255, 0.7);
	font-family: Inter;
	font-size: 15px;
	text-transform: uppercase;
	transition: background 0.3s;
	--picker-radius: 0;
}

select[data-selected="1"] {
	background: #7a5c2e;
}
select[data-selected="2"] {
	background: #8a2a20;
}
select[data-selected="3"] {
	background: #1a3f6e;
}
select[data-selected="4"] {
	background: #2a6e30;
}
select[data-selected="5"] {
	background: #5b2e7a;
}

::picker(select) {
	inset: anchor(top) anchor(right) anchor(bottom) anchor(left);
	width: var(--button-radius);
	height: var(--button-radius);
	padding: 0;
	margin: 0;
	overflow: visible;
	background-color: #1a2a1a;
	border: none;
	border-radius: var(--button-radius);
	opacity: 0;
	transition: all 0.4s allow-discrete;
	--picker-radius: 0vmin;
}

option {
	/* Arc from 6 o'clock (0) to 9 o'clock (-π/2), distributed across siblings. */
	--angle: calc(
		0 + (-1.5708 - 0) * (sibling-index() - 1) / (sibling-count() - 1)
	);

	position: absolute;
	display: grid;
	place-items: center;
	width: var(--button-radius);
	height: var(--button-radius);
	padding: 0;
	margin: 0;
	border-radius: var(--button-radius);
	translate: calc(sin(var(--angle)) * var(--picker-radius))
		calc(cos(var(--angle)) * var(--picker-radius));
	transition-delay: calc(sibling-index() * 0.05s);
	transition-duration: 0.4s;
	transition-property: --picker-radius;
	font-family: Inter;
	font-size: 15px;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.9);
}

option[value="1"] {
	background: #7a5c2e;
} /* Sand */
option[value="2"] {
	background: #8a2a20;
} /* Red */
option[value="3"] {
	background: #1a3f6e;
} /* Blue */
option[value="4"] {
	background: #2a6e30;
} /* Green */
option[value="5"] {
	background: #5b2e7a;
} /* Purple */

:open::picker(select) {
	opacity: 1;
}
:open option {
	--picker-radius: var(--picker-radius-open);
}

@starting-style {
	:open::picker(select) {
		opacity: 0;
	}
	:open optio.........完整代码请登录后点击上方下载按钮下载查看

网友评论0