扫码关注官方订阅号
小时的数字选择到0的时候上面已经没有数字可以选择了,但是分钟不一样,还可以往上选从59开始循环,这是怎么实现的,并且数字转动到框里面样式发生改变,是怎么确定该数字转到了框里的。
ringa_lee
写一下思路,首先:使用p+CSS+JS实现,不能用select;
数字是使用transform3d做的变形效果;
分钟滚动的动画效果由JS捕捉用户行为判断滑动距离,添加css动画transition配合transformY轴位移实现;从0向上滚动到59需要复制一个组出来→ 查看DEMODEMO里设定每分钟的高度是14px,初始化时的值translate3d(0,-112px,0);这样一上来焦点就在0这个位置了,若想知道用户滚动的值是多少就根据translate3d(0,-112px,0)的值/14(每分钟行的高度) 计算滑动到了第几个值比如demo第一行是8 ,8*14 = 112
用js实现吗?是可以的,你用css3的变形属性,例如 transform 等,配合滚动
3d效果,使用rotate3d与transform3d做出来,可参考这篇文章:好吧,CSS3 3D transform变换,不过如此!
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
写一下思路,首先:使用p+CSS+JS实现,不能用select;
数字是使用transform3d做的变形效果;
分钟滚动的动画效果由JS捕捉用户行为判断滑动距离,添加css动画transition配合transformY轴位移实现;
从0向上滚动到59需要复制一个组出来→ 查看DEMO
DEMO里设定每分钟的高度是14px,初始化时的值translate3d(0,-112px,0);
这样一上来焦点就在0这个位置了,若想知道用户滚动的值是多少
就根据translate3d(0,-112px,0)的值/14(每分钟行的高度) 计算滑动到了第几个值
比如demo第一行是8 ,8*14 = 112
用js实现吗?是可以的,你用css3的变形属性,例如 transform 等,配合滚动
3d效果,使用rotate3d与transform3d做出来,可参考这篇文章:
好吧,CSS3 3D transform变换,不过如此!