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