【web组件库系列】纯CSS实现典型网页数据分页器

简介: 【web组件库系列】纯CSS实现典型网页数据分页器

使用CSS实现分页器


【提示】:本文中’Out[]:'代表代码对应的运行结果。

1. 基本实现方案

将分页器看作是一个无序列表,页面项看作是无序列表项目,则一个最原始的分页器(不带样式)实现如下:

<ul class="pager">
  <li><a href="#">«</a></li>
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">»</a></li>
</ul>

Out[]:

  • «
  • 1
  • 2
  • 3
  • »
  • 以上这个分页器有3个页面,分别是1,2,3。
  • “«”和“»”是为分页数目过多时预留的,即假设有数据量决定的页面有100页,当我们在58页时,显示的分页为57、58、59,这是“«”表示页面链接到57页的前一页,即56页。“»”同理,为60页。
  • 由于这里我们只讨论CSS样式,不关系“«”和“»”是否出现和什么时候出现的逻辑。

让无序列表中所有的项目间组成行内元素

ul.pager li {
    display: inline;         /* 行内元素 */
}
ul.pager {
    display: inline-block;  /* 行内块状元素 */
    padding: 0;
    margin: 0;
}

Out[]:

这就是一个最简单的分页器了。但这个分页器似乎并不好看。好看的分页器,如百度大概是这个样子的:

让每一个列表项目拥有方形背景

ul.pager li a {
    color: #000;                       /* 字体颜色 */
    float: left;                       /* 从左向右浮动 */
    padding: 12px 21px;                /* 内边距 */
    margin:3px;                        /* 外边距 */
    text-decoration: none;             /* 清除文字修饰 */
    border: 1px solid #000;            /* 边框颜色 */
}

Out[]:

为当前页标签绘色

ul.pager li a.active {
    background-color: #4E6EF2;
    color: white;
    border: 1px solid #4E6EF2;
}

Out[]:

光标移入颜色变灰,光标移除颜色恢复

ul.pager li a:hover:not(.active) {
  background-color: #cdcdcd;
}

光标移入3时:

光标移出3时:

这样,就实现了一个漂亮的CSS分页器

2. 进一步完善

上/下一页文字

这里主要是参考百度搜索的分页器看起来的样子进行调整。我们可以将左右部分使用文字:

<div class="bk">
  <ul class="pager">
    <li><a href="#"><上一页</a></li>
    <li><a href="#">1</a></li>
    <li><a class="active" href="#">2</a></li>
    <li><a href="#">3</a></li>
      <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li><a href="#">6</a></li>
    <li><a href="#">7</a></li>
    <li><a href="#">8</a></li>
    <li><a href="#">9</a></li>
    <li><a href="#">10</a></li>
    <li><a href="#">下一页></a></li>
  </ul>
</div>

圆角、光标移入变换时间

ul.pager li a {
    color: #000;                     /* 字体颜色 */
  background-color: #fff;          /* 背景颜色 */
    float: left;                       /* 从左向右浮动 */
    padding: 12px 18px;                /* 内边距 */
  margin:9px;                        /* 外边距 */
    text-decoration: none;             /* 清除文字修饰 */
  border-radius: 6.5px;              /* 圆角 */
  transition: background-color .3s;  /* 动画变换时间 */
}

添加一个背景色

由于各项目为白色,给个背景色:

.bk{
  height:66px;
    width: 900px;
    background-color: #F5F5F6;
  text-align:center
}

完整的代码

完整的代码如下:

<style>
ul.pager li {display: inline;}
ul.pager {
    display: inline-block;
    padding: 0;
    margin: 0;
}
ul.pager li a {
    color: #000;                     /* 字体颜色 */
  background-color: #fff;          /* 背景颜色 */
    float: left;                       /* 从左向右浮动 */
    padding: 12px 18px;                /* 内边距 */
  margin:9px;                        /* 外边距 */
    text-decoration: none;             /* 清除文字修饰 */
  border-radius: 6.5px;              /* 圆角 */
  transition: background-color .3s;  /* 动画变换时间 */
}
ul.pager li a:hover:not(.active) {
  background-color: #cdcdcd;
}
ul.pager li a.active {
    background-color: #4E6EF2;
    color: white;
    border: 1px solid #4E6EF2;
}
.bk{
  height:66px;
    width: 900px;
    background-color: #F5F5F6;
  text-align:center
}
</style>
<div class="bk">
  <ul class="pager">
    <li><a href="#"><上一页</a></li>
    <li><a href="#">1</a></li>
    <li><a class="active" href="#">2</a></li>
    <li><a href="#">3</a></li>
      <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li><a href="#">6</a></li>
    <li><a href="#">7</a></li>
    <li><a href="#">8</a></li>
    <li><a href="#">9</a></li>
    <li><a href="#">10</a></li>
    <li><a href="#">下一页></a></li>
  </ul>
</div>

打开浏览器,可以看到:

目录
相关文章
|
5天前
|
开发框架 JSON API
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
【7月更文挑战第22天】在Python Web开发中,设计高效的RESTful API涉及选择框架(如Flask或Django)、明确资源及使用HTTP方法(GET, POST, PUT, DELETE)来操作数据。响应格式通常是JSON,错误处理也很重要。示例展示了使用Flask创建图书管理API,包括版本控制、文档化、安全性和性能优化是最佳实践。这样的API使数据交互更顺畅。
26 2
|
7天前
|
API 网络架构 C++
SharePoint Online SPFx Web部件绑定数据
【7月更文挑战第6天】在Markdown格式下,以下是关于创建SharePoint Online SPFx Web部件绑定数据步骤的摘要: 1. 创建数据列表。 2. 使用VS Code打开Web部件。 3. 定义列表模型(如`IList`和`IListItem`接口)。 4. 引入`spHttpClient`以执行REST API请求。 5. 实现`_getListData()`方法,调用REST服务获取列表数据。 6. 设计`_renderList()`方法来渲染数据。 7. 在`render()`方法中获取并渲染数据到Web部件。
|
14天前
|
Web App开发 前端开发 安全
2024年新一代WebOffice内嵌网页组件,Web网页在线编辑Word/Excel/PPT
WebOffice控件面临兼容性、用户体验和维护难题。随着浏览器更新,依赖插件的技术不再适用,如Chrome不再支持NPAPI和PPAPI。产品普遍不支持多版本Office并存,定制能力弱,升级复杂。猿大师办公助手提供了解决方案,它兼容多种浏览器,包括最新版和国产浏览器,不依赖插件,支持文档对比,具有丰富的功能和接口,兼容多种Office版本,允许源码级定制,提供终身技术支持,并实现静默在线升级。适用于多种行业和操作系统。
61 2
|
10天前
|
前端开发 JavaScript UED
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
【7月更文挑战第16天】在前后端分离的Web开发中,WebSocket解决了实时数据交换的问题。使用Python的Flask和Flask-SocketIO库,后端创建WebSocket服务,监听并广播消息。前端HTML通过JavaScript连接到服务器,发送并显示接收到的消息。WebSocket适用于实时通知、在线游戏等场景,提升应用的实时性和用户体验。通过实战案例,展示了如何实现这一功能。
|
1月前
|
前端开发 JavaScript API
探索现代Web开发中的动态数据交互——前端与后端整合实战
本文探讨了现代Web开发中前端与后端整合的关键技术点,通过实际案例演示了如何利用JavaScript和Node.js实现动态数据交互,全面解析从数据请求到响应的全过程。
|
24天前
|
设计模式 JavaScript 前端开发
Web Components详解-组件通信
Web Components详解-组件通信
21 6
|
23天前
|
前端开发 JavaScript
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
|
1月前
|
移动开发 前端开发 JavaScript
HTML5+CSS3+JavaScript网页实战
HTML5+CSS3+JavaScript网页实战
|
1月前
|
XML 前端开发 数据挖掘
Web数据提取:Python中BeautifulSoup与htmltab的结合使用
Web数据提取:Python中BeautifulSoup与htmltab的结合使用
|
1月前
|
前端开发 编解码 移动开发
【魅力网页的背后】:CSS基础魔法,从零打造视觉盛宴
【魅力网页的背后】:CSS基础魔法,从零打造视觉盛宴