<template><div class="xtx-pagination"><a href="javascript:;" @click="changePage(-1)" :class="{ disabled: curPage === 1 }">上一页</a><span v-if="curPage > 3">...</span><ahref="javascript:;"@click="changePage(item)"v-for="item in list":key="item":class="{ active: curPage === item }">{{ item }}</a><span v-if="curPage < pages - 2">...</span><a href="javascript:;" @click="changePage(1)" :class="{ disabled: curPage === pages }">下一页</a></div>
</template>
<script>
import { ref, computed } from 'vue'
export default {name: 'XtxPagination',props: {total: { type: Number, default: 80 },pageSize: { type: Number, default: 8 }},setup(props) {const changePage = type => {if (type === 1) {if (curPage.value === pages.value) returncurPage.value += 1} else if (type === -1) {if (curPage.value === 1) returncurPage.value -= 1} else {curPage.value = type}}const curPage = ref(1)const pages = computed(() => Math.ceil(props.total / props.pageSize))// 动态计算页码列表const list = computed(() => {// 总页码小等于5const result = []if (pages.value <= 5) {for (let i = 1; i <= pages.value; i++) {result.push(i)}}// 总页码>5else {if (curPage.value <= 3) {for (let i = 1; i <= 5; i++) {result.push(i)}} else if (curPage.value >= pages.value - 1) {for (let i = pages.value - 4; i <= pages.value; i++) {result.push(i)}} else {for (let i = curPage.value - 2; i <= curPage.value + 2; i++) {result.push(i)}}}return result})return { curPage, pages, list, changePage }}
}
</script>
<style scoped lang="less">
.xtx-pagination {display: flex;justify-content: center;padding: 30px;> a {display: inline-block;padding: 5px 10px;border: 1px solid #e4e4e4;border-radius: 4px;margin-right: 10px;&:hover {color: @xtxColor;}&.active {background: @xtxColor;color: #fff;border-color: @xtxColor;}&.disabled {cursor: not-allowed;opacity: 0.4;&:hover {color: #333;}}}> span {margin-right: 10px;}
}
</style>

vue3.0分页组件相关推荐

  1. vue3.0父子组件的通信

    vue3.0父子组件的通信 Vue3.0组件通信 Vue3.0组件通信 vue3.0脚手架setup内部的组件通信 1.父到子通过props 父组件 <template><div & ...

  2. vue3.0 父组件调用子组件方法及获取子组件的值

    vue3.0 父组件调用子组件方法及获取子组件的值 通过对比2.0的获取及调用方式这里我们也可以借鉴2.0中的this.$refs去获取3.0和2.0的refs获取的方式有点大同小异,但是思路还是一样 ...

  3. Angular4.0分页组件

    自己分装的分页组件,可供学习使用 paging分页组件 分页组件的实现原理 1.由父组件传入数据总量 2.分页组件返回当前显示页面,每页显示数量 3.父组件根据分页组件返回的两个值,控制数据的分页显示 ...

  4. vue3.0 父子组件通信

    子传父:子组件调用父组件方法 vue3.0不再支持this,所以this.$emit()方法不在被支持. 以下为VUE3.0新写法 子组件: <script> import { defin ...

  5. vue3.0 父子组件传值问题

    使用vue3.0时遇到父子传值的问题,顺便记录一下 问题背景: 如图所示,编辑按钮是父组件的部分,下面的表单是子组件 需要:按下父组件中的编辑按钮时,子组件的表单需要变成可编辑状态,在可编辑状态下按下 ...

  6. 自定义vue3.0日历组件

    一.前言 别人的东西用起来总是那么的不顺手,UI库的日历组件竟然不返回星期几,完全无法忍受,于是自己动手写了一个日历组件. 自己写的东西,那就是想怎么搞就怎么搞,哈哈哈哈哈. 二.代码 我使用的nav ...

  7. vue3.0 子组件调用父组件中的方法

    在vue2中,子组件调用父组件,直接使用this.$emit()即可. 但是在vue3中,很显然使用this.$emit() 已经开始报错了,为什么会报错呢? 原因是:在vue3中setup是在声明周 ...

  8. vue3.0子组件向父组件传值-发布订阅者模式

    子组件向父组件传值-context.emit 子组件向父组件传值 context.emit 子组件向父组件传值 context.emit 子组件中: 将数据terminationOpinion传给父组 ...

  9. vue3使用的移动端UI框架,vue3.0 ui组件库

    vue 3.0 项目中 element-ui form 表单元素中 仅 el-button 显示,其他不显示,如何解决? 谷歌人工智能写作项目:小发猫 在页面中引用了laydate插件,在显示的时候, ...

最新文章

  1. Thinkphp----------为什么Thinkphp会默认进入Index控制器的index方法
  2. 算法系列【希尔排序】篇
  3. 没有流程的项目管理,都是无用功!
  4. java io流 教程_Java基础教程:IO流与文件基础
  5. PGpool 编译出错
  6. C#ADO.NET操作数据代码汇总
  7. The prefix mvc for element mvc:annotation-driven is not bound 的解决方法
  8. 进程和线程 内存分配
  9. 我的创作纪念日——文章汇总
  10. 计算机组装课上机课干什么,多媒体技术与《计算机组装与维护》课的精彩结合:组装一台多媒体计算机需要哪些部件...
  11. 华为手机计算机快捷,快速让华为手机变成一台电脑,INNOCN便携显示器的更多玩法...
  12. 杰里之1T8 烧写器使用文档【篇】
  13. 做问卷调查最基本的注意事项
  14. Canvas绘制飞机飞行
  15. bundle install 出现 'gem install mysql2 -v '0.3.15' succeeds before bunding '
  16. linux 下perl离线包下载
  17. 微信扫码支付流程原理图
  18. java获取剩余手机电池容量_怎样判断手机电池的剩余容量
  19. EF框架(一)搭建过程
  20. 一句话木马拿Shell与菜刀原理

热门文章

  1. 底层网络知识详解:从二层到三层-第6讲-交换机与VLAN:办公室太复杂,我要回学校
  2. 参加scrum中文网ScrumMaster认证培训
  3. 鸿合怎么删掉linux6_鸿合电子白板使用手册(共6页)
  4. SpringMVC执行流程及工作原理
  5. 数据可视化-Treemap
  6. 微软outlook服务器,Outlook 和 Outlook 服务器之间的Outlook Web App
  7. 工信部公布汽车油耗数
  8. 让计算机的cpu 硬盘 显卡,电脑经常卡死运行很慢, 别怪CPU和显卡, 而是它
  9. Cocos2d-x 3.2 大富翁游戏项目开发
  10. BUUCTF rsa2(低密度指数攻击)