elementui 实现一个固定位置的Pagination(分页)组件

系列文章目录

一、elementui 导航菜单栏和Breadcrumb 面包屑关联

二、elementui 左侧导航菜单栏与main区域联动

三、elementui 中设置图片的高度并支持PC和手机自适应

四、 elementui 实现一个固定位置的Pagination(分页)组件


文章目录


前言

在Element UI中,要实现一个固定位置的Pagination(分页)组件,可以使用CSS来固定Pagination的位置,并将Pagination组件包裹在一个固定位置的容器中。


一、实现效果

在该网页的右下角固定位置

二、实现步骤

PS:针对有一点点vue基础的新手

1.添加Pagination组件

在你的Vue组件中添加Pagination组件

javascript 复制代码
 <!--添加Pagination组件-->
 <div class="pagination-container">
     <el-pagination
             @size-change="handleSizeChange"
             @current-change="handleCurrentChange"
             :current-page="currentPage"
             :page-sizes="[4, 8, 12]"
             :page-size="pageSize"
             layout="total, sizes, prev, pager, next, jumper"
             :total="total">
     </el-pagination>
 </div>

<script>
    export default {
        name: "FileView",
        data() {
            return {
                currentPage: 1,
                pageSize: 8,
                total: 10,
            };
        },
        computed: {
            currentPageData() {
                return this.items.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize);
            }
        },
        methods: {
            handleSizeChange(val) {
                this.pageSize = val;
                this.currentPage = 1;
            },
            handleCurrentChange(val) {
                this.currentPage = val;
            }
        }
    };
</script>

2.CSS样式代码

在你的样式文件中(例如

javascript 复制代码
<style scoped>
    .maindiv {
        /* 确保.maindiv 是Pagination的父容器 */
        position: relative;
        height: 580px; /* 或者其他高度以确保Pagination下方有足够空间 */
    }
    .pagination-container {
        position: absolute; /* 固定位置 */
        bottom: 10px; /* 距离底部10像素 */
        right: 10px; /* 距离右侧10像素 */
    }
</style>

三、完整代码

javascript 复制代码
 <template>
    <div class="maindiv">
        <el-row>
            <el-col :span="6" v-for="(item, index) in currentPageData" :key="index" style="padding: 3px;">
                <el-card  :body-style="{ padding: '0px' }">
                    <img v-if="item.image" :src="item.image" class="image">
                    <div style="padding: 14px;">
                        <span>{{ item.title }}</span>
                        <div class="bottom clearfix">
                            <time class="time">{{ item.time }}</time>
                            <el-button type="text" class="button">操作按钮</el-button>
                        </div>
                    </div>
                </el-card>
            </el-col>
        </el-row>
        <!--添加Pagination组件-->
        <div class="pagination-container">
            <el-pagination
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="currentPage"
                    :page-sizes="[4, 8, 12]"
                    :page-size="pageSize"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total">
            </el-pagination>
        </div>
    </div>
</template>

<script>
    export default {
        name: "FileView",
        data() {
            return {
                currentPage: 1,
                pageSize: 8,
                total: 10,
                items: [
                    {
                        image:"https://img0.baidu.com/it/u=3558402622,3525872153&fm=253&fmt=auto&app=138&f=JPEG?w=718&h=500",
                        title:"好吃的汉堡",
                        time:"2024-03-25"
                    }
                    // 填充你的数据对象,每个对象包含 'image', 'title', 'time' 属性
                ]
            };
        },
        computed: {
            currentPageData() {
                return this.items.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize);
            }
        },
        methods: {
            handleSizeChange(val) {
                this.pageSize = val;
                this.currentPage = 1;
            },
            handleCurrentChange(val) {
                this.currentPage = val;
            }
        }
    };
</script>
<style scoped>
    .time {
        font-size: 13px;
        color: #999;
    }
    .bottom {
        margin-top: 13px;
        line-height: 12px;
    }
    .button {
        padding: 0;
        float: right;
    }
    .clearfix:before,
    .clearfix:after {
        display: table;
        content: "";
    }
    .clearfix:after {
        clear: both
    }
    .image {
        width: 100%;
        display: block;
    }
    .maindiv {
        /* 确保.maindiv 是Pagination的父容器 */
        position: relative;
        height: 580px; /* 或者其他高度以确保Pagination下方有足够空间 */
    }
    .pagination-container {
        position: absolute; /* 固定位置 */
        bottom: 10px; /* 距离底部10像素 */
        right: 10px; /* 距离右侧10像素 */
    }
</style>
相关推荐
anOnion21 小时前
构建无障碍组件之Window Splitter Pattern
前端·html·交互设计
小眼哥21 小时前
SpringBoot整合Vue代码生成exe运行程序以及windows安装包
vue.js·windows·spring boot
NotFound48621 小时前
实战分享Python爬虫,如何实现高效解析 Web of Science 文献数据并导出 CSV
前端·爬虫·python
徐小夕21 小时前
PDF无限制预览!Jit-Viewer V1.5.0开源文档预览神器正式发布
前端·vue.js·github
WangJunXiang621 小时前
Haproxy搭建Web群集
前端
吴声子夜歌1 天前
Vue.js——自定义指令
前端·vue.js·flutter
小芝麻咿呀1 天前
vue--面试题第一部分
前端·javascript·vue.js
nibabaoo1 天前
前端开发攻略---H5页面手机获取摄像头权限回显出画面并且同步到PC页面
javascript·websocket·实时音视频·实时同步·录制
早起傻一天~G1 天前
vue2+element-UI表格封装
javascript·vue.js·ui