<template>
<div>
<ul :total="total" :pageSize="pageSize" :pageNum="pageNum">
<li @click="leftRight(1)">
<上一页
</li>
<li @click="pageClick(item)" :style="{color:item==page?'red':'black'}" v-for="item in arr" :key="item">{{item}}
</li>
<li @click="leftRight(2)">下一页></li>
</ul>
</div>
</template> <script>
export default {
props: {
total: {
type: Number,
default: 0
},
pageSize: {
type: Number,
default: 10
},
pageNum: {
type: Number,
default: 1
},
},
data() {
return {
length: 0,
page: 1,
arr: [],
}
},
mounted() {
this.getLength()
},
methods: {
getLength() {//获取页码大小并初始化页面
let shuzu = [];
if (this.total % this.pageSize == 0) {
this.length = this.total / this.pageSize;
} else {
this.length = parseInt(this.total / this.pageSize) + 1; }
// console.log(this.length + 'this.length')
if (this.length >= 10) {
shuzu.length = 10
} else {
shuzu.length = this.length
}
for (let i = 0; i <shuzu.length; i++) {
shuzu[i] = i + 1
}
this.arr = shuzu
},
getpage(page) {
let shuzu = [];
let j = 0
let str = 0
if (page + 5 <= this.length) {
str = page + 5
j = page - 5
} else {
str = page + (this.length - page)
j = str - 10
} for (let i = j+1; i <= str; i++) {
shuzu.push(i)
}
this.arr = shuzu
},
pageClick(page) {
this.page = page
// console.log(this.arr.length)
if (page <= this.arr.length / 2 || this.length <= 10) {
alert('1')
this.getLength()
} else {
this.getpage(page)
}
this.pageNumChange(this.page)
},
leftRight(e){
switch (e){
case 1:
if(this.page==1){
this.page=1
}
else {
this.page-=1
}
this.pageClick(this.page)
break;
case 2:
if(this.page==this.length){
this.page=this.length
}else {
this.page+=1
}
this.pageClick(this.page)
break;
}
this.pageNumChange(this.page)
},
pageNumChange(page){
this.$emit('pageNumChange',page)
}
}
}
</script> <style scoped>
* {
margin: 0;
padding: 0;
} ul > li {
-ms-user-select:none;
margin:0 2px;
display: inline-block;
border: 1px black solid;
min-width: 20px;
height: 20px;
border-radius: 2px;
cursor: pointer;
vertical-align: middle;
} li:hover {
border: 1px cornflowerblue solid;
}
</style>

  

页面样式没有调整好  不过逻辑是完成了

自定义vue组件之仿百度分页逻辑的更多相关文章

  1. php实现仿百度分页

    本文主要和大家分享php实现仿百度分页的实例,先来看一下效果图. 基本策略 1, 首先要查询总记录数 2, 设置每页显示的数量并计算总页数 3, 增加一个get传值num代表当前访问的是哪一页,如果没 ...

  2. 自定义Vue组件

    自定义Vue组件的三步骤 1.创建组件 2.注册组件 3.使用组件 创建组件 //创建组件 var myclock = { data(){ return { clock: new Date().toL ...

  3. JAVA仿百度分页

    最近在做一个仿百度网盘的网页小应用,找到了一个优雅简洁的分页插件,和百度搜索的分页很相似,对他进行了二次封装,拿出来跟大家分享下 插件源码 /** * This jQuery plugin displ ...

  4. 自定义Vue组件打包、发布到npm以及使用

    本文将帮助:将自己写的Vue组件打包到npm进行代码托管,以及正常发布之后如何使用自己的组件. 本文讲述的仅仅是最基础的实现,其他复杂的操作需要非常熟悉webpack的相关知识,作者将继续学习. 先附 ...

  5. 仿百度壁纸客户端(二)——主页自定义ViewPager广告定时轮播图

    仿百度壁纸客户端(二)--主页自定义ViewPager广告定时轮播图 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  6. 仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment

    仿百度壁纸客户端(一)--主框架搭建,自定义Tab+ViewPager+Fragment 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment ...

  7. 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字

    仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Frag ...

  8. Vue源码翻译之渲染逻辑链

    本篇文章主要要记录说明的是,Vue在Vdom的创建上的相关细节.这也是描绘了Vue在界面的创建上的一个逻辑顺序,同时我也非常拜服作者编码的逻辑性,当然或许这么庞大复杂的编码不是一次性铸就的,我想应该也 ...

  9. 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化

    仿百度壁纸客户端(六)--完结篇之Gallery画廊实现壁纸预览已经项目细节优化 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度 ...

随机推荐

  1. Natas27 Writeup(mysql溢出截断漏洞)

    Natas27: 一个登录节界面,查看源码. <html> <head> <!-- This stuff in the header has nothing to do ...

  2. 「建议心心」要就来15道多线程面试题一次爽到底(1.1w字用心整理)

    . 本文是给**「建议收藏」200MB大厂面试文档,整理总结2020年最强面试题库「CoreJava篇」**写的答案,所有相关文章已经收录在码云仓库:https://gitee.com/bingqil ...

  3. c# 对SOAP返回XML字符串的解析方法

    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Head ...

  4. ASP.NET Core 3.x 中间件流程与路由体系

    中间件分类 ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map(). Run(),使用Run调用中间件的时候,会直接返回一个响 ...

  5. hdu3294 Manacher算法模板

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3294/ 回文长度如果是mxx,回文中心是id的话,在扩展串中(id-mxx+1,id+mxx-1)的这段中去除标 ...

  6. PHP之从反向删除单链表元素的问题谈起

    在完成一个单链表的删除指定元素的题目中,我发现了一件神奇的事情,php对象赋值给另外一个变量后,可以如同引用传值一般继续利用新的变量来实现链表的链接. 后面经过查证后发现: PHP7.0版本除了对象, ...

  7. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  8. 基于KNN的发票识别

    项目概况: 有一个PDF文件,里面的每页都是一张发票,把每页的发票单独存为一个PDF并用该发票的的发票号码进行文件的命名,发票号码需要OCR识别,即识别下图中红色方块的内容. 一:拆分PDF 现有一个 ...

  9. 《自拍教程52》Python_adb运行Shell脚本

    Android作为一款Linux终端,肯定是支持.sh后缀的Shell脚本的运行的, 有时候测试环境准备或者长时间截取复杂的日志等,开发会给到一些Shell脚本. Shell脚本的执行的优势: 快捷高 ...

  10. 《 OO第一作业周期(前四周)总结 》

    作为一名软件工程的大学生,很高兴能够以这样一种方式,实现对博客编写零的突破.专业课老师也介绍了编写博客给我们带来的帮助,听了以后,我感觉到了培养出写博客的习惯,是一件多么有意义的事! 话不多说,让我们 ...