实现一个滚动选择组件

363 阅读1分钟

实现效果

select.gif

思路分析

1.结构部分

首先需要一个外部盒子,盒子里有一个可供滚动的区域,此区域实现上下滚动效果。另外有一个用来显示选中的高亮效果。

2.交互部分

可以上下滚动,因此要绑定scroll事件。选中的那一项有增大效果,其他未选中的项没有,所以就需要根据滚动的距离判断当前显示的那一项的index值,给当前index的项添加active样式,其他项则没有。而且每一项都可以点击选中需要给每一项添加clcik事件。

步骤

1.结构

image.png 给结构添加样式:

image.png 高亮效果部分相对于最外面的box定位,可保证不会被滚动区域影响。且其top值可以动态添加进组件。

2.js代码

初始化部分:

image.png 这里的height记录的是整个滚动区域上下需要添加的部分,如果没有这部分,则滚动区域上部会紧贴box顶部,导致无法选中最上方与最下方的选项。\

滚动时触发scroll事件:

image.png 为选中的项添加样式:

image.png 一个滚动组件就大功告成啦~~~

不足

没有组件化,需要进行prop的校验等。样式没有认真打磨。 在此只提供简单的实现,还请多指教。