gsap模仿iOS闹钟桶时间输入风格代码
代码语言:html
所属分类:布局界面
代码描述:gsap模仿iOS闹钟桶时间输入风格代码,可拖拽选择、可设置值动画滚动。
代码标签: gsap iOS 闹钟 桶 时间 输入 风格 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@layer normalize, base, demo;
@layer demo {
.controls {
--line-height: 34px;
--item-size: 56px;
--visor: hsl(240deg 3.3% 17.84%);
color: hsl(240deg 3.3% 87.84%);
}
.control {
--scroll-padding: 0px;
--inner-angle: calc((360 / var(--total)) * 1deg);
--scroll-buff: calc(var(--item-size) * var(--scroll-ratio));
--gap: calc(var(--item-size) * var(--gap-efficient, 0.1));
--gap: 0px;
--radius: calc(
((var(--line-height) + var(--gap)) / sin(var(--inner-angle))) * -1
);
}
img {
position: fixed;
z-index: 3;
pointer-events: none;
width: 375px;
translate: 0 110%;
opacity: 1;
}
body {
overflow: hidden;
}
.meridien-form {
position: fixed;
top: 50%;
left: 1rem;
}
.control {
width: var(--item-size);
aspect-ratio: 1 / 2;
/*height: var(--item-size);*/
/*outline: 2px dashed red;*/
position: relative;
perspective: 60px;
timeline-scope: --controller;
display: grid;
place-items: center;
transform-style: preserve-3d;
/*perspective: 200px;*/
transform: translateX(-0.5rem) translateZ(0);
-webkit-mask: linear-gradient(#0000, #fff, #0000);
mask: linear-gradient(#0000, #fff, #0000);
}
.meridiem .controller {
padding-block: 0;
}
.meridiem {
--rotation: calc(360deg / var(--total));
}
.track {
width: 100%;
word-break: break-all;
color: white;
pointer-events: none;
font-weight: 400;
word-spacing: 200px;
text-align: center;
position: absolute;
line-height: var(--line-height);
top: 0;
/*outline: 2px green dashed;
outline-offset: 2px;*/
font-size: 1.45rem;
}
.track-holder {
width: 100%;
height: var(--line-height);
/*outline: 2px dashed white;*/
/*outline-offset: 4px;*/
position: absolute;
top: 50%;
left: 0;
overflow: hidden;
/*background: grey;*/
color: white;
translate: 0 -50%;
pointer-events: none;
background: var(--visor);
/*transform: translate3d(0, 0, 1px);*/
}
.controller::-webkit-scrollbar {
display: none;
}
.controller {
scrollbar-width: 0;
width: 100%;
aspect-ratio: 1;
height: 220px;
/*height: 100%;*/
color: #0000;
overflow: auto;
/*outline: 2px dashed hotpink;*/
margin: 0;
padding: 0;
-ms-scroll-snap-type: y mandatory;
scroll-snap-type: y mandatory;
scroll-timeline: --controller;
padding-block: 2px;
scrollbar-color: #0000 #0000;
li {
width: 100%;
/*height: 100%;*/
aspect-ratio: 1;
height: 220px;
scroll-snap-align: center;
/*outline: 2px dashed green;*/
display: grid;
place-items: center;
}
}
.controls {
transform-style: preserve-3d;
/*perspective: 20vmin;*/
display: flex;
position: fixed;
gap: 0;
top: 50%;
left: 50%;
font-weight: 300;
translate: -50% -50%;
&::after {
content: '';
position: absolute;
top: 50%;
height: var(--line-height);
width: 346px;
border-radius: 6px;
background: var(--visor);
left: 50%;
transform-style: preserve-3d;
transform: translate3d(-50%, -50%, -1px);
pointer-events: none;
}
}
.wheel {
position: absolute;
width: 100%;
height: var(--line-height);
/*aspect-ratio: 1;*/
outline: 2px dashed blue;
outline-offset: 2px;
font-size: 1.4rem;
pointer-events: none;
transform: translate3d(0, 0, calc((var(--radius) * 1) - 4px));
transform-style: preserve-3d;
div {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
position: absolute;
inset: 0;
/*outline: 2px dashed yellow;*/
/*background: blue;*/
outline-offset: 4px;
transform-style: preserve-3d;
text-align: center;
display: grid;
place-items: center;
transform: rotateX(
calc((var(--total) - var(--index)) * var(--inner-angle))
)
translate3d(0, 0, calc(var(--radius) * -1));
}
}
@supports (animation-timeline: scroll()) {
.wheel {
-webkit-animation: rotate both linear;
animation: rotate both linear;
animation-timeline: --controller;
}
.track {
-webkit-animation: translate both linear;
animation: translate both linear;
animation-timeline: --controller;
}
}
.controller[data-no-snap] {
-ms-scroll-snap-type: unset;
scroll-snap-type: unset;
}
.controller[data-no-snap] + .wheel {
-webkit-animation-name: none;
animation-name: none;
}
.controller[data-no-snap] ~ .track-holder .track {
-webkit-animation.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0