前言
在日常的前端开发中,分页器是一个非常常见的组件。虽然 Bootstrap 提供了默认的分页器组件,但是在某些应用场景中,我们往往需要更加个性化的分页器组件,以符合业务需要。本文将介绍如何使用 Custom Elements 和 Bootstrap,创建一个高度自定义的分页器组件,以及相关的技术细节和实现方案。
准备工作
在开始编写自定义分页器组件之前,需要准备以下几个工具和技术:
在本文中,我们将使用 Bootstrap 4 来构建分页器的样式,同时使用 Custom Elements 来实现分页器的自定义组件。
分页器组件的基本结构
在开始编写组件之前,首先需要明确分页器组件的基本结构。一个基本的分页器组件应该包含以下几个部分:
- 上一页按钮
- 下一页按钮
- 当前页码的输入框
- 跳转到指定页码的按钮
下面是一个简单的示意图:
在分页器组件中,我们需要提供以下一些属性:
page
:表示当前页码,需要和输入框中的值进行同步。pageSize
:表示每页展示的数据条数。total
:表示数据总条数。showQuickJumper
:是否展示跳转输入框和按钮。
编写分页器组件
1. 创建 Custom Element
首先,我们需要创建一个 Custom Element,用于代表分页器组件。我们给这个元素定义一个 pagination-element
的标签名:
--------- ------------------------- ---- ------------------- ---- ---------- --- ------ ----------- -------- ----- ----------------- ------- ----------- - ------------- - -------- ----- -------- - ------------------------------------------------------- ----------- - ------------------- ----- ------ -- --------------------------------------- - - ------------------------------------------- ------------------- ---------
在以上代码中,我们使用了 attachShadow
方法来创建了一个 Shadow DOM,将模板插入到其中。接下来我们就可以在模板中编写分页器组件的具体结构了。
2. 编写分页器的基本结构
在模板中,我们可以结合 Bootstrap 4 的样式,编写一个最基本的分页器结构:
---- ---------- --- ------- ----------- - -------- ----- ---------------- ------- ------------ ------- ------- ---- -- - ---------- - -------- ------------- -------- - ----- ---------- ----- ------------ ---- ------- --- ----- -------- -------------- ---- ------ ----- - ----------------- - ------ ----- ----------------- -------- ------------- -------- ------- -------- - ------------------- - ------ ----- ----------------- ----- ------------- -------- ------- ------------ - -------- ---- ------------------- --- ------------------- --- ------------------ -- ----------------- ---------------- ----- --- ---------------- -------- -- ----------------- -------------- ----- --- ------------------ -- ----------------- -------------- ----- --- ------------------ -- ----------------- -------------- ----- --- ---------------- ---------- -- ----------------- ---------------- ----- --- ------------------ -- ----------------- -------------- ----- --- ------------------ -- ----------------- ---------------- ----- ----- ------
以上分页器结构包含了分页器的基本元素,即上一页、下一页按钮,以及页码列表。注意,在列表中,我们添加了一个 ...
的占位符,方便展示更多的页码。
3. 实现分页器组件的功能
有了基本的结构之后,接下来我们需要对这个分页器组件进行功能实现。具体来说,我们需要添加以下一些功能:
- 上一页和下一页功能
- 页码列表渲染
- 当前页码输入框和跳转功能
上一页和下一页功能
--- ------------------ -- ----------------- -------- ----------------- ----- --- ------------------ -- ----------------- -------- ----------------- -----
通过给上一页和下一页的按钮添加一个 id
值,我们可以方便地通过 JavaScript 获取这个节点,然后给这个节点添加一个点击事件。
------------- - -------- ----- -------- - ------------------------------------------------------- ----------- - ------------------- ----- ------ -- --------------------------------------- -- ---------------- ---------------------------------- -------------------------- -------------------------- ---------------------------------- -------------------------- -------------------------- - ---------- - -- ----- - ---------- - -- ----- -
接下来,我们还需要给每一个 page-item
添加一个点击事件,方便用户进行手动跳转:
--- ----------------- ----------------- -- ----------------- -------------- ----- --- ----------------- ----------------- -- ----------------- -------------- ----- --- ----------------- ----------------- -- ----------------- -------------- -----
同样的,我们给每一个 page-item
添加一个 id
来获取节点,然后绑定点击事件即可。
------------- - -- --- -- ----------- ----- --------- - ------------------------------------------- ------------------------ -- - ------------------------------ ------------------------ ------------------------------ --- - -------------------- - -- ------- -
页码列表渲染
接下来我们需要实现渲染页码列表的逻辑。
首先,我们需要获取当前分页器的属性值,包括 page
、total
和 pageSize
。
--- ------ - ------ ----------------------------------- -- -- - --- --------- - ------------------------- ----- - --- ------- - ------ ------------------------------------ -- -- - --- ---------- - -------------------------- ----- - --- ---------- - ------ ---------------------------------------- -- --- - --- ------------- - ------------------------------ ----- -
接下来,我们可以根据属性值计算出总页数和页面列表。
--- ------------ - ------ -------------------- - --------------- - --- ------- - --- --------- - -- --- ------- - ---------------- -- ---------------- - -- - -- ---------- -- -- - ------- - -- - ---- -- ---------- - --------------- - -- - --------- - --------------- - -- - ---- - --------- - --------- - -- ------- - --------- - -- - - ----- ----- - ------------------------ - - - ------------------ ------ -- --------- - --- ------ ------ -
其中,我们通过计算当前页码,然后判断页码列表的起始页码和结束页码。
最后,我们可以通过遍历计算得到的页面列表,来渲染分页器的页码列表。
-------- - ----- --------- - ------------------------------------------- ------------------------ -- - ---------------------------------- --- ----- -- - -------------------------------- -- ----------- - -------------- - --- ---- - - -- - -- ----------- ---- - ----- -- - ------------------------- ------------------- -------------- - - ---- - ----- ----- - ----------- -------------------- -- - ----- -- - ---------------------------- ------------------- -------------- --- - - --------------------- - ----- -- - ----------------------------- ------------------------------ --------------------- -------------------- ----- - - ---------------------------- ----------------------------- ---------------------- ----------- ----------- - ---- ------------------ -- ---- --- ---------- - --------------------------- - ------ --- -
以上代码中,我们通过 generatePageItem
方法来生成每一个页码元素,然后使用遍历,将每个页码元素添加到分页器中。
当前页码输入框和跳转功能
最后,我们需要添加一个输入框和跳转按钮,方便用户手动输入页码进行跳转。
---- ------------------ --------------- --------------- --------------- ------- ------ ----------- --------------------- ---- --------------------------- ------- ---------- ---------------------- ------------- ------------------------- ------ ------
以上代码中,我们使用了 Bootstrap 4 的样式来渲染输入框和按钮,并且给输入框和按钮都添加了一个 id
值来方便获取节点。
接下来,我们绑定跳转按钮的点击事件:
------------- - -- --- -------------------------------------- -------------------------- -------------------------- - ---------- - ----- ---------- - ----------------------------------------------- --------------- -- ------------ -- ---------- - - -- ---------- - ---------------- - ------- - --------- - ----------- -------------- -
以上代码中,我们获取到输入框中的值,如果输入值不符合要求则不进行跳转。否则,我们通过设置 page
属性值,然后重新渲染分页器来实现跳转功能。
同时,我们还需要根据 showQuickJumper
属性值,来决定是否展示输入框和按钮:
--- ----------------- - ------ --------------------------------------- - --- -------------------- - -- ----- - -------------------------------------- ---- - ---- -- ---------------------------------------- - ------------------------------------------ - - ------------------- - -- ---------------------- - ------------------------------------------------------ - -------- - - ------------------------------ --------- --------- - -- ----- --- -------------------- - ------------------------------------------------------ - -------- - ------- - ------- - -
总结
通过使用 Custom Elements 和 Bootstrap,我们可以快速实现一个高度自定义的分页器组件。在组件的实现过程中,我们学习了如何创建一个 Custom Element,
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65b4e905add4f0e0ffdc16b8