Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
1
2
3
4
5
Spin Rate
css
main { width: 30vmin; height: 30vmin; border: 0vmin dashed white; position: relative; transform-style: preserve-3d; --base-transform: rotateX(0deg); transform-origin: 50% 50%; animation: display-case 2000ms infinite linear; border-radius: 50%; } @media (prefers-reduced-motion) { main { animation-play-state: paused; } } @keyframes display-case { 0% { transform: var(--base-transform) rotateZ(0turn); } 100% { transform: var(--base-transform) rotateZ(-1turn); } } .container { width: 30vmin; height: 30vmin; transform-style: preserve-3d; transform: rotateY(-.05turn); transition: transform 1000ms ease-in-out; transform-origin: 50% 50%; } .tree { width: 3.5vmin; height: 1vmin; background: hsl(133, 50%, 40%); position: absolute; top: 50%; left: 50%; transition: transform 1000ms ease-in-out; transform: translate(-50%, -50%) var(--base-rotate, rotateZ(0turn)) var(--base-offset, translateX(0vmin)) var(--depth, translateZ(0vmin)) var(--tilt, rotateX(0deg)) scaleY(calc(var(--i) * 0.09)); } .ornament { width: 3vmin; height: 3vmin; background: hsl(calc(var(--i) * 28), 90%, 54%); opacity: 1; transition: 1600ms cubic-bezier(1,0,.5,.5); transition-property: opacity, transform; border-radius: 50%; transform-style: preserve-3d; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) var(--base-rotate, rotateZ(0turn)) var(--base-offset, translateX(0vmin)) var(--depth, translateZ(0vmin)) var(--tilt, rotateX(0deg) rotateY(0deg)); } .star { width: 8vmin; height: 8vmin; background: hsl(28, 90%, 54%); opacity: 0; clip-path: polygon(100% 34%, 10% 90%, 50% 0%, 90% 90%, 0% 34%); } [data-steps*="1"] .tree { --base-rotate: rotateZ(calc(var(--i) * -30deg)); } [data-steps*="2"] .tree { --base-offset: translateX(calc(var(--i) * -0.325vmin)); } [data-steps*="3"] .container { transform: rotateX(-.275turn) translateZ(30vmin); } [data-steps*="4"] .tree { --depth: translateZ(calc(calc(var(--length) - var(--i)) * -0.75vmin)); --tilt: rotateX(calc(var(--i) * 0.1deg + 1deg)); } [data-steps*="5"] .ornament { opacity: 1; --base-rotate: rotateZ(calc(var(--i) * -30deg)); --base-offset: translateX(calc(var(--i) * -0.3725vmin)); --depth: translateZ(calc(calc(var(--length) - var(--i)) * -0.75vmin)); --tilt: rotateX(80deg) rotateY(60deg); transition-timing-function: cubic-bezier(.5,.5,0,1); } [data-steps*="5"] .star { opacity: 1; --base-rotate: rotateZ(0deg); --base-offset: translateX(0vmin); --depth: translateZ(calc(90 * -0.75vmin)); --tilt: rotateX(90deg) rotateY(0deg); transition-timing-function: cubic-bezier(.5,.5,0,1); } [data-steps*="5"] .star:last-of-type { background: hsl(38, 90%, 54%); --tilt: rotateX(90deg) rotateY(90deg); } body { display: flex; height: 100vh; background-color: #062546; justify-content: center; align-items: center; perspective: 500vmin; perspective-origin: 50% 0%; overflow: hidden; padding-bottom: 4rem; font-family: system-ui, -apple-system, 'Segoe UI', sans-serif; } form { position: absolute; bottom: 1rem; display: flex; flex-direction: column; } * { box-sizing: border-box; margin: 0; padding: 0; } input[type="radio"] { opacity: 0; position: absolute; } label { color: white; } input + label { width: 2.5rem; height: 2.5rem; border: .125rem solid white; border-radius: 50%; display: flex; justify-content: center; align-items: center; color: white; margin: 0 .5rem; transition: all 300ms linear; background: hsla(343,100%,50%,1) } input:checked + label ~ label { opacity: .67; border: 0rem solid white; scale: .8; background: hsla(343,100%,50%,.2) } form > div { display: flex; } form > div:last-child { flex-direction: column; margin-top: 1rem; }
JavaScript
const main = document.querySelector("main"); const parts = document.querySelectorAll(".tree"); const ornaments = document.querySelectorAll(".ornament"); document.documentElement.setAttribute('data-steps', '1234'); parts.forEach((part, i) => { part.style.setProperty('--i', i); }); ornaments.forEach((part, i) => { part.style.setProperty('--i', i * 3.6 + 12); //maaaagic numbers! }); // Show different steps to get to the tree const steps = document.querySelectorAll('input[type="radio"]'); steps.forEach((step) => { step.addEventListener('click', (e) => { document.documentElement.setAttribute('data-steps', e.currentTarget.value); }); }); // Update Playback Rate const rate = document.getElementById('rate'); const updateRate = e => { if (main.getAnimations) { const animation = main.getAnimations()[0]; if (animation) { if (animation.playState === 'paused') { animation.play(); } animation.playbackRate = parseFloat(e.currentTarget.value); } } }; rate.addEventListener('input', updateRate);
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>树螺旋2020-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号