欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue分頁組件實現(xiàn)過程詳解

 更新時間:2022年12月09日 16:29:44   作者:阿選不出來  
Web應用程序中資源分頁不僅對性能很有幫助,而且從用戶體驗的角度來說也是非常有用的。在這篇文章中,將了解如何使用Vue創(chuàng)建動態(tài)和可用的分頁組件

HTML代碼

<template>
      <div class="paging" v-if="count">
        <ul>
            <li class="pre" v-show="page > 1" @click="jian()">
                <span>上一頁</span>
            </li>
            <li v-for="(item,index) in pageall" :key="index" 
            :class="{'active': page === item, 'ellipsis': item === '...'}" 
            @click="res_page(item)">
            {{item}}</li>
            <li class="next" v-show="page < totalPages" @click="jia()">
                <span>下一頁</span>
            </li>
        </ul>
        <span class="sum">共 {{totalPages}} 頁, 跳至</span>
        <input type="text" @keyup.enter="activePage($event)">
        <span>頁</span>
    </div>
</template>

組件的一些規(guī)定和條件

我們可以把這個分頁組件分為三種形態(tài)

第一種 總頁數(shù) <=5 的

我們規(guī)定當總頁數(shù)小于5時, 展示出所有的頁碼

第二種 當前頁為第一頁或最后一頁的

當頁碼為第一頁或者最后一頁時, 選擇性的消失 上一頁 或 下一頁 按鈕

第三種 以上兩種都不是的

首先這個分頁組件需要得知三個條件

count(數(shù)據(jù)總數(shù)), page(當前頁數(shù)), page_size(每頁展示的數(shù)量)

prop:['count','page','page_size']

注意: 由于子組件不能直接改變父組件的值, 所以在引用該分頁組件的父組件中,

可以寫入 :changePage.sync=“page”,

每當page改變時 采用this.$emit(“changePage”, value) 傳入value來改變page

創(chuàng)建分頁數(shù)組

在Vue計算屬性中得出總頁數(shù) totalPages

totalPages(){
	return Math.ceil(this.count / this.paeg_size)
}

在Vue計算屬性中得出兩個值, beforePages afterPages 代表最小值與最大值(第一頁與最后一頁除外)

beforePages(){
	return this.page -2
}
afterPages(){   
    return this.page + 2
},

我們規(guī)定總是顯示當前頁的前兩頁和后兩頁.

重點來了, 在Vue屬性中創(chuàng)建分頁數(shù)組

添加第一頁和最后一頁

首先我們規(guī)定的beforePage=page-2, 當beforepage > 1 時, 即page > (1+2) , 這個時候就需要添加第一頁 .

最后一頁同理

什么時候添加省略呢?

我們還規(guī)定當totalPage總頁數(shù)小于等于5頁時,展示所有頁碼 ,

當totalPage > 5,并且beforePage=page-2>=3或者afterPage=page+2<=totalPage-2時添加省略.

當totalPage < 5,如圖所示:

我們需要把前省略替換成2 后省略替換成4

pageall(){
    let arr=[]
    for(let everyPages = this.beforePages; everyPages <= this.afterPages; everyPages++) {
        if(everyPages > this.totalPages) {
            continue;
        }
        if(everyPages <= 0){
            continue;
        }
       arr.push(everyPages)
    }
    // 添加第一頁
    if(this.page > 3 {
        arr.unshift(1)
    }
    // 添加最后一頁
    if(this.page < this.totalPages-2) {
        arr.push(this.totalPages)
    }
    //添加前省略
    if(this.page >= 5) {
    	if(this.totalPages > 5) {
    		arr.splice(1,0,'...')
    	}else{
    		arr.splice(1,0,2)
    	}
    }
    //添加后省略
    if(this.page <= this.totalPages-4) {
    	if(this.totalPages > 5) {
    		arr.splice(arr.length-1,0,"...")
    	}else{
    		arr.splice(arr.length-1,0,4)
    	}
   }
    return arr
}

切換頁碼

現(xiàn)在數(shù)組已經(jīng)完成, 還需要添加上點擊切換頁碼的方法.

點擊下一頁????

jia(){
	this.$emit('update:changepage',  this.page + 1)
}

點擊上一頁????

jian(){
	this.$emit('update:changepage',  this.page - 1)
}

點擊任意一頁

res_page(value){
	if(value!=="..."){
		this.$emit('update:changepage',  value)
	}V
}

在輸入框內輸入頁碼,按Enter鍵跳轉

activePage(e){
    if(e.target.value > this.totalPages) {
        this.$emit('update:changepage', this.totalPages)
    }else if(e.target.value <= 0) {
        this.$emit('update:changepage', 1)
    }else{
        this.$emit('update:changepage', e.target.value - 0)
    }
    e.target.value = ""
    e.target.blur()
}

CSS

最后附上CSS代碼

       .paging {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #657180;
            ul {
                padding: 5px;
                display: inline-flex;
                background-color: #FFF;
                li {
                    width: 40px;
                    height: 40px;
                    margin: 0 2px;
                    border-radius:5px;
                    border: 1px solid #d7dde4;
                    list-style: none;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    caret-color: transparent;
                    cursor:pointer;
                }
                li:first-child{
                    width: 80px;
                    border-radius: 40px 0 0 40px;
                    span {
                        color: #000000;
                    }
                }
                li:last-child{
                    width: 80px;
                    border-radius: 0 40px 40px 0;
                    span {
                        color: #000000;
                    }
                }
                li:hover {
                    color: #00a1d6;
                    transition: all 0.5s;
                    border-color: #00a1d6;
                }
                .ellipsis {
                    border: none;
                }
                .ellipsis:hover {
                    color: #657180;
                }
                .active{
                    background-color: #00a1d6;
                    color: #FFF;
                }
            }
            .sum {
                margin-left: 30px;
            }
            span{
                font-size: 13px;
                color: #99a2aa;
            }
            input {
                height: 30px;
                width: 60px;
                border-radius: 5px;
                border: 1px solid #d7dde4;
                margin: 0 10px;
                outline: none;
            }
        }

到此這篇關于Vue分頁組件實現(xiàn)過程詳解的文章就介紹到這了,更多相關Vue分頁組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue-electron使用serialport時問題解決方案

    vue-electron使用serialport時問題解決方案

    這篇文章主要介紹了vue-electron使用serialport時問題解決方案,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • 關閉Vue計算屬性自帶的緩存功能方法

    關閉Vue計算屬性自帶的緩存功能方法

    下面小編就為大家分享一篇關閉Vue計算屬性自帶的緩存功能方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue中的高德軌跡回放

    Vue中的高德軌跡回放

    這篇文章主要介紹了Vue中的高德軌跡回放問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • iview tabs 頂部導航欄和模塊切換欄的示例代碼

    iview tabs 頂部導航欄和模塊切換欄的示例代碼

    這篇文章主要介紹了iview tabs 頂部導航欄和模塊切換欄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • vue點擊按鈕跳轉到另一個vue頁面實現(xiàn)方法

    vue點擊按鈕跳轉到另一個vue頁面實現(xiàn)方法

    這篇文章主要給大家介紹了關于vue點擊按鈕跳轉到另一個vue頁面的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • vue+echarts實現(xiàn)多條折線圖

    vue+echarts實現(xiàn)多條折線圖

    這篇文章主要為大家詳細介紹了vue+echarts實現(xiàn)多條折線圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue+Element-ui實現(xiàn)分頁效果

    vue+Element-ui實現(xiàn)分頁效果

    這篇文章主要為大家詳細介紹了vue+Element-ui實現(xiàn)分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Vue組件通信之Bus的具體使用

    Vue組件通信之Bus的具體使用

    本篇文章主要介紹了Vue組件通信之Bus的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 關于vue的npm run dev和npm run build的區(qū)別介紹

    關于vue的npm run dev和npm run build的區(qū)別介紹

    這篇文章主要介紹了關于vue的npm run dev和npm run build的區(qū)別介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vscode下vue項目中eslint的使用方法

    vscode下vue項目中eslint的使用方法

    這篇文章主要給大家介紹了關于vscode下vue項目中eslint的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01

最新評論