一步一步实现字母索引导航栏

本文介绍了如何一步步实现字母索引导航栏,包括创建内容列表组件和索引导航组件,通过监听手指拖动更新索引字母,实现内容列表跳转等功能。通过事件模式和触摸事件处理,最终完成了一个可应用于APP的字母索引导航栏组件。
摘要由CSDN通过智能技术生成

图片描述
作者:伯乐在线专栏作者 - lubootang
链接:http://web.jobbole.com/88889/
链接:在线DEMO(http://www.luobotang.cn/index-sidebar/),
源代码(https://github.com/luobotang/index-sidebar
这个索引导航栏的效果在很多 APP 中都有应用,我也是参考了一些 APP 的效果进行实现。

不过之前接触移动端页面开发较少,所以是边学边做,也就把这个过程中的一些东西整理记录下来。

设计

这个功能的基本需求可以总结为一句话:手指在导航栏(也就是 DEMO 上页面右侧的包含字母的竖条)拖动时,根据当前手指位置,页面主体内容列表跳转到对应字母的内容项。

当然,延伸开来,可以是对于已经排序的列表,导航栏显示对应的索引字符列表,支持快速跳转到对应的索引位置。

这里主要介绍导航栏的实现,只看导航栏的话,其实要实现的东西比较简单,只需要在手指移动时获取对应的字母即可。页面主体内容列表的跳转应该交由另一个列表组件实现。

在程序代码中,组合导航栏和内容列表两个组件,导航栏索引字母更新时,内容列表跳转到对应的位置。

结合 DEMO,整体的实现逻辑为:

// 创建一个内容列表组件
var itemList = new ItemList(data)

// 创建一个索引导航组件
var indexSidebar = new IndexSidebar()

// 组合两个组件实现功能
// 监听索引导航组件,一旦索引字符更新,内容列表跳转至对应的索引字符
indexSidebar.on(‘charChange’, function (ch) {
itemList.gotoChar(ch)
})

接下来,我们一步步实现。

第 1 步:创建 IndexSidebar “类”

我选择采用实例化“类”的方式来创建新的组件对象,定义“类”,其实就是创建一个构造函数(当然,采用 ES6 语法会更清晰,不过考虑兼容性这里不使用):

function IndexSidebar(options) {
// TODO 处理 options
this.initialize(options)
}

IndexSidebar.prototype.initialize = function (options) {
// TODO 初始化
}

这里借鉴 Backbone 的模式,将组件初始化的逻辑单独写在一个 initialize() 方法中,当然逻辑也可以都写在构造函数中。

在实现具体的功能前,我们可以先让前面设计的代码跑起来,首先补全导航组件的接口方法,支持监听事件:

// 特定事件触发时,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值