实现效果
思路分析
1.结构部分
首先需要一个外部盒子,盒子里有一个可供滚动的区域,此区域实现上下滚动效果。另外有一个用来显示选中的高亮效果。
2.交互部分
可以上下滚动,因此要绑定scroll事件。选中的那一项有增大效果,其他未选中的项没有,所以就需要根据滚动的距离判断当前显示的那一项的index值,给当前index的项添加active样式,其他项则没有。而且每一项都可以点击选中需要给每一项添加clcik事件。
步骤
1.结构
给结构添加样式:
高亮效果部分相对于最外面的box定位,可保证不会被滚动区域影响。且其top值可以动态添加进组件。
2.js代码
初始化部分:
这里的height记录的是整个滚动区域上下需要添加的部分,如果没有这部分,则滚动区域上部会紧贴box顶部,导致无法选中最上方与最下方的选项。\
滚动时触发scroll事件:
为选中的项添加样式:
一个滚动组件就大功告成啦~~~
不足
没有组件化,需要进行prop的校验等。样式没有认真打磨。 在此只提供简单的实现,还请多指教。