【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>

打开浏览器,可以看到:

目录
相关文章
|
2月前
|
前端开发 JavaScript Python
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
在前后端分离的Web应用开发模式中,如何实现前后端之间的实时数据交换成为了一个重要议题。传统的轮询或长轮询方式在实时性、资源消耗和服务器压力方面存在明显不足,而WebSocket技术的出现则为这一问题提供了优雅的解决方案。本文将通过实战案例,详细介绍如何在Python Web应用中运用WebSocket技术,实现前后端之间的实时数据交换。
103 0
|
1月前
|
数据采集 存储 前端开发
Puppeteer教程:使用CSS选择器点击和爬取动态数据
本文介绍如何使用Puppeteer结合CSS选择器爬取动态网页数据,以贝壳网的二手房价格为例,通过代理IP提高爬虫成功率。文章详细讲解了Puppeteer的安装和配置、代码实现及数据趋势分析,帮助读者掌握动态网页爬取技术。
Puppeteer教程:使用CSS选择器点击和爬取动态数据
|
24天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
32 6
|
24天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
27 5
|
1月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
46 3
|
2月前
|
JavaScript API 开发工具
(H5-Web3D-ThreeJS)在网页三维CAD中绘制窗户模型
本文介绍了如何使用mxcad3d在网页中创建一个简单的三维窗户模型。通过官方教程搭建环境,编写绘制窗户模型的代码,并在点击按钮后展示模型效果。最终模型包括窗框和玻璃部分,具备丰富的三维建模功能和便捷的API支持。
|
3月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
2月前
|
Web App开发 前端开发 网络性能优化
Web网页端IM产品RainbowChat-Web的v7.2版已发布
RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统)。
41 1
|
2月前
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
64 2
|
2月前
|
存储 前端开发 安全
详解CSS之Web 字体
详解CSS之Web 字体
32 4
下一篇
DataWorks