vue实现分页显示效果
代码语言:html
所属分类:布局界面
代码描述:vue实现分页显示效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>CodePen - 100 icons - Pagination VueJS</title> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@500;600&display=swap" rel="stylesheet"> <style> :root { --primary: #6b5bfd; --greyLight: #cdd5f7; --greyLight-2: #f8f9ff; --greyDark: #646b8a; } *, *::before, *::after { margin: 0; padding: 0; box-sizing: inherit; } html { box-sizing: border-box; font-size: 62.5%; overflow-y: scroll; font-family: "Poppins", sans-serif; letter-spacing: 0.6px; line-height: 1.4; -webkit-user-select: none; backface-visibility: hidden; -webkit-font-smoothing: subpixel-antialiased; } .container { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; background: var(--greyLight-2); color: var(--greyDark); } ul { list-style-type: none; } .items-list { max-width: 90vw; margin: 2rem; display: grid; grid-template-columns: repeat(5, 1fr); grid-gap: 3rem; justify-content: center; align-content: center; } @media only screen and (max-width: 600px) { .items-list { grid-template-columns: repeat(2, 1fr); } } .item { width: 10rem; height: 10rem; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--greyDark); cursor: pointer; } .item span { background: #ffffff; box-shadow: 0 0.8rem 2rem rgba(90, 97, 129, 0.05); border-radius: 0.6rem; padding: 2rem; font-size: 3rem; transition: all 0.3s ease; } .item:hover span { transform: scale(1.2); color: var(--primary); } .item p { font-size: 1.2rem; margin-top: 1rem; color: var(--greyLight); } .page { display: flex; justify-content: center; align-items: center; height: 5rem; margin: 3rem; border-radius: 0.6rem; background: #ffffff; box-shadow: 0 0.8rem 2rem rgba(90, 97, 129, 0.05); } .page__numbers, .page__btn, .page__dots { display: flex; justify-content: center; align-items: center; margin: 0.8rem; font-size: 1.4rem; cursor: pointer; } .page__dots { width: 2.6rem; height: 2.6rem; color: var(--greyLight); cursor: initial; } .page__numbers { width: 2.6rem; height: 2.6rem; border-radius: 0.4rem; } .page__numbers:hover { color: var(--primary); } .page__numbers.active { color: #ffffff; background: var(--primary); font-weight: 600; border: 1px solid var(--primary); } .page__btn { color: var(--greyLight); pointer-events: none; } .page__btn.active { color: var(--greyDark); pointer-events: initial; } .page__btn.active:hover { color: var(--primary); } </style> </head> <body translate="no" > <div id="app" class="container"> <ul class="items-list"> <li v-for="item in displayedItems" class="item" v-html="item"></li> </ul> <ul class="page"> <li class="page__btn" :class="{'active' : (currentPage != 1)}" @click="currentPage--"><span class="material-icons">chevron_left</span></li> <li class="page__numbers" @click="currentPage = 1" v-if="currentPage > 3"> {{pages[0]}}</li> <li class="page__dots" v-if="currentPage > 3">...</li> <li class="page__numbers" v-for="pageNumber in displayedPages" @click="currentPage = pageNumber" :class="{'active' : (currentPage === (pageNumber))}">{{pageNumber}}</li> <li class="page__dots" v-if="currentPage < pages.length - 2">...</li> <li class="page__numbers" @click="currentPage = pages.length" v-if="currentPage < pages.length - 2"> {{pages[pages.length - 1]}}</li> <li class="page__btn" :class="{'active' : (currentPage < pages.length)}" @click="currentPage++"><span class="material-icons">chevron_right</span></li> </ul> </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script> <script > new Vue({ el: "#app", data() { return { items: [], currentPage: 1, perPage: 10, pages: [], icon: [ "invert_colors", "label", "lock", "lock_open", "extension", "favori.........完整代码请登录后点击上方下载按钮下载查看
网友评论0