序言

项目需要自己写了一个基于vue的paginator分享出来,欢迎各路好汉来指教
当页数小于999(包括999)页
页数大于999页
首页或尾页disabled
10页之内显示
Usage
参数
pageCount: 整数,代表总页数
监听事件
@togglePage: 监听切换页面事件,可以获取到当前前往页的页数
父组件调用方法 index.vue
<template lang="html">
<div>
<paginator :pageCount="pageCount" @togglePage="togglePage($event)"></paginator>
</div>
</template>
<script>
export default {
data(){
return{
//总页数
pageCount: 24
}
},
methods:{
togglePage(indexPage){
//打印出当前页数
console.log(indexPage);
},
}
}
</script>
分页组件 paginator.vue
<template lang="html">
<div class="pagination">
<ul>
<li :class="{disabled: curPage == 1}" @click="prevPage" v-if="pageCount > 1">上一页</li>
<li :class="{active: curPage == 1}" @click="page(1)">1</li>
<li class="ellipsis" v-show="curPage > 5 && pageCount > 10">...</li>
<li :class="{active: curPage == index+offset}" v-for="(item,index) in middlePages" @click="page(index+offset)">{{index+offset}}</li>
<li class="ellipsis" v-show="curPage < bigLimit && pageCount > 10">...</li>
<li :class="{active: curPage == pageCount}" @click="page(pageCount)" v-if="pageCount > 1">{{pageCount}}</li>
<li :class="{disabled: curPage == pageCount}" @click="nextPage" v-if="pageCount > 1">下一页</li>
</ul>
</div>
</template>
<script>
export default {
props:['pageCount'],
data(){
return {
curPage: 1,
};
},
computed:{
middlePages(){
if(this.pageCount <= 2){
return 0;
}else if(this.pageCount> 2 && this.pageCount <= 10){
return this.pageCount-2;
}else{
return this.curPage > 999 ? 5 : 8;
}
},
bigLimit(){
return this.middlePages > 5 ? this.pageCount-6 : this.pageCount -3;
},
offset(){
if(this.curPage <= 5){
return 2;
}else if(this.curPage >= this.bigLimit){
return this.bigLimit-2;
}else{
return this.middlePages > 5 ? this.curPage-3 : this.curPage-2;
}
}
},
methods:{
page(indexPage){
this.$emit('togglePage',indexPage);
this.curPage = indexPage;
},
prevPage(){
if(this.curPage != 1){
this.page(this.curPage-1);
}
},
nextPage(){
if(this.curPage != this.pageCount){
this.page(this.curPage+1);
}
}
}
};
</script>
<style lang="css" scoped>
@import 'styles/vars.css';
.pagination{
width: 660px;
text-align: center;
ul{
margin: 40px 0 60px 0;
li{
cursor: pointer;
display: inline-block;
padding: 5px 9px;
border: 1px solid #e1e1eb;
margin-right: 5px;
&.active{
background: #4078c0;
color: #fff;
}
&.ellipsis{
border: none;
}
&.disabled{
color: #dcdcdc;
}
}
}
}
</style>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# 翻页组件
# paginator
# 翻页
# vue.js的分页组件
# vue 翻页组件vue-flip-page效果
# 基于Vuejs框架实现翻页组件
# vue自定义翻页组件的方法
# 下一页
# 上一页
# 尾页
# 分页
# 写了
# 首页
# 大家多多
# 之内
# methods
# indexPage
# return
# export
# script
# data
# default
# console
# click
# curPage
# html
相关文章:
如何访问已购建站主机并解决登录问题?
教学论文网站制作软件有哪些,写论文用什么软件
?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
网站制作员失业,怎样查看自己网站的注册者?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何快速生成高效建站系统源代码?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站主机选哪家性价比最高?
,巨量百应是干嘛的?
如何在万网自助建站平台快速创建网站?
如何高效完成自助建站业务培训?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
建站之星客服服务时间及联系方式如何?
外贸公司网站制作哪家好,maersk船公司官网?
如何通过远程VPS快速搭建个人网站?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
香港服务器租用每月最低只需15元?
如何选择靠谱的建站公司加盟品牌?
金*站制作公司有哪些,金华教育集团官网?
自助网站制作软件,个人如何自助建网站?
常州企业网站制作公司,全国继续教育网怎么登录?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
贸易公司网站制作流程,出口贸易网站设计怎么做?
学校为何禁止电信移动建设网站?
网站制作报价单模板图片,小松挖机官方网站报价?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
测试制作网站有哪些,测试性取向的权威测试或者网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
做企业网站制作流程,企业网站制作基本流程有哪些?
建站之星后台密码遗忘或太弱?如何重置与强化?
详解jQuery中基本的动画方法
,如何利用word制作宣传手册?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站主机选购指南:核心配置与性价比推荐解析
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
简单实现Android验证码
高端智能建站公司优选:品牌定制与SEO优化一站式服务
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。