效果图如下:

1、在components建立page.vue文件

<template><div class="pagination"><!-- 上 --><button :disabled="pageNo == 1" @click="getPageNo(pageNo - 1)">上一张</button><buttonv-if="startNumAndEndNum.start > 1"@click="getPageNo(1)":class="{ active: pageNo == 1 }">1</button><buttonv-if="startNumAndEndNum.start > 2"@click="getPageNo(pageNo - continues)">···</button><!-- 中间部分 --><buttonv-for="(page, index) in generateMiddlePage":key="index"@click="getPageNo(page)":class="{ active: pageNo == page }">{{ page }}</button><!-- 下 --><buttonv-if="startNumAndEndNum.end < totalPage - 1"@click="getPageNo(pageNo +continues)">···</button><buttonv-if="startNumAndEndNum.end < totalPage"@click="getPageNo(totalPage)":class="{active:pageNo==totalPage}">{{ totalPage }}</button><button:disabled="pageNo == totalPage"@click="getPageNo(pageNo + 1)">下一张</button></div>
</template><script>export default {name: "Pagination",props: ["pageNo", "pageSize", "total", "continues"],computed: {//计算出总页数totalPage() {//向上取整return Math.ceil(this.total / this.pageSize);},//计算出页码的起始和结束数字startNumAndEndNum() {const {continues, pageNo, totalPage} = this;//先定义两个变量存储起始数字与结束数字let start = 0,end = 0;if (continues > totalPage) {start = 1;end = totalPage;} else {//起始数字start = pageNo - parseInt(continues / 2);//结束数字end = pageNo + parseInt(continues / 2);if (start < 1) {start = 1;end = continues;}if (end > totalPage) {end = totalPage;start = totalPage - continues + 1;}}return {start, end};},//过滤掉小于起始页的页码generateMiddlePage() {let arr = [];//避免页面中同时使用 v-for和v-if for (let i = 0; i <= this.startNumAndEndNum.end; i++) {arr.push(i)}let temp = arr.filter(item => {return item >= this.startNumAndEndNum.start})return temp}},methods: {getPageNo(val) {//自定义事件子页面向父页面传参,计算属性值this.$emit('getPageNo', val)},}};
</script><style lang="scss" scoped>.pagination {text-align: center;width: 70px;button {margin:12px 0px 0px 0px;background-color: #fff;color: #409eff;border:1px solid #409eff;outline: none;border-radius: 2px;padding: 0 4px;vertical-align: top;display: inline-block;font-size: 14px;width: 60px;height: 38px;line-height: 38px;cursor: pointer;box-sizing: border-box;text-align: center;&[disabled] {color: #c0c4cc;cursor: not-allowed;border:1px solid #ddd;}&:hover{background: #ddeffb;}&[disabled]:hover{ background: none;}&.active {cursor: not-allowed;background-color: #409eff;color: #fff;}}}
</style>

2、在页面中引入组件

<page:pageNo="pageNo":pageSize="pageSize":total="pageTotal":continues="5"  //超过5时中建按钮有省略号@getPageNo="getPageNo"/>import page from '@/components/page'data(){return{pageNo:1,pageSize:1, pageTotal:5,}
}//方法中
methods:{getPageNo(pageNo){this.pageNo=pageNo},}

vue自定义翻页组件相关推荐

  1. vue实现上下滑动翻页_如何通过vue实现一款简单通用的翻页组件

    预览 先上一波效果图: 基本元素 首先,翻页组件(以下称"pager组件")一般拥有的元素有: 上一页 第一页 中间显示的页码 最后一页 下一页 初始化时需要的配置有: total ...

  2. vue 定义全局弹框_VUE路由拦截:Vue自定义全局弹窗组件

    前言 在任何一个平台中,如果需要增加用户黏度,除了用户需要的基本内容外,用户登录注册提交信息也是非常重要的一环,可以了解用户基本信息,用户喜欢等. 抛出前后端混合开发外,vue可以轻松的实现路由拦截. ...

  3. IOS开发之--UIScrollView pagingEnabled自定义翻页宽度

    用到UIScrollview的翻页效果时,有时需要显示一部分左右的内容,但是UIScrollView的PagingEnabled只能翻过整页,下面几个简单的设置即可实现 技术点: 1. 创建一个继承U ...

  4. Bootstrap翻页组件

    翻页组件 一些简单的网站,比如博客或者杂志网站,希望用更少的标记和样式,来创建简单的"前一页"和"后一页"的翻页组件. Bootstrap中,只需为列表设置.p ...

  5. vue自定义音频播放组件_易于创建Vue的自定义音频播放器组件

    vue自定义音频播放组件 音频更好 (vue-audio-better) Easy to create custom audio player components for Vue.js. 易于为Vu ...

  6. vue自定义日历小组件

    vue自定义小日历组件 一.前言 自己开发的项目需要用到类似博客侧边栏小日历组件,觉得自己造一个比较随心所欲,更能满足自己的需求,所以决定自己开发一个.最终效果如图所示. 二.日历样式 我的这个日历组 ...

  7. Vue自定义InputNumber 计数器组件

    1.为什么要自己封装一个InputNumber 计数器组件? 因为原始的el-element的el-input-number组件有问题: 原生组件能输入英文,不能限制只能输入数值: 原始组件能通过键盘 ...

  8. C#在控件中绘制矩形、圆、线段等(切换不同的图片,自定义翻页控件,通过委托监控某个字段)

    1.效果展示 2 自定义翻页控件 public partial class PageManagemen : UserControl{/// <summary>/// 当前页(从1开始计数) ...

  9. Vue 自定义多选组件

    Vue 自定义多选组件 子组件(选项卡) checkBoxCard.vue <template><div class="checkBoxCard">< ...

最新文章

  1. 机器学习类别/标称(categorical)数据处理:序号编码(Ordinal Encoding)
  2. 【LeetCode】two num 利用comparable接口 对对象进行排序
  3. linux服务器安装mysql并配置外网访问
  4. Monte Carlo仿真方法的基本思想及其特点
  5. suse linux11 改ip,suse11如何修改hostname[Linux基础]
  6. 计算机学业测试答案解析,计算机测试题及答案.doc
  7. Java中Math3 各种随机数生成器的使用(Random Generator)
  8. win8学习--------计时器
  9. add_axes()——python绘图
  10. C#从入门到精通视频教程(2009年最新)- 视频列表
  11. 泛函编程(4)-深入Scala函数类
  12. _itemmod_description
  13. 使用application对象实现网站访问量统计
  14. 插上U盾计算机无法识别,U盾插入电脑后没反应,网上银行识别不了?
  15. 戴尔笔记本修改硬盘模式为AHCI再安装ubuntu
  16. Python3爬取企查查网站的企业年表并存入MySQL
  17. JAVA版本号的问题 Java版本号与JDK版本
  18. Mockman-Mock服务工具的安装与使用以及mock的一些扩展
  19. matlab 画图基本介绍
  20. Mixin Messenger 的分布式 D3M-PIN 码介绍

热门文章

  1. 转:长篇小说《七月七日晴》(超感人的)(上)
  2. 如何对下拉菜单进行截图
  3. 小程序跳转页面弹出公众号引导用户关注
  4. 编程题:核桃的数量(求最小公倍数的问题)
  5. 微信好友头像全家福详细教程
  6. LeetCode 2171. 拿出最少数目的魔法豆
  7. 水果店微信小程序定制开发需要多少钱【最新报价方案】
  8. react中使用ECharts绘制各省市地图
  9. 微信朋友圈卖货五大法则
  10. vite+ts+vue3 知识点(全局组件,局部组件,递归组件)