ElImage轮播图破层不能正常显示,隐藏控件el-image-viewer实现

 0 0条评论

vue版本3.0

element-plus版本:2.0.2

el-image组件有一个preview-src-list,可以实现轮播图的效果,非常酷,但是在我的项目中,代码如下:

<el-table-column label="图片">
    <template #default="{row}">
        <el-image :preview-src-list="srcList" style="width:70px;" fit="cover" :src="row.url">
        </el-image>
    </template>
</el-table-column>

完全按照官方代码写的,但是会出现破层,eltable的内容会部分覆盖轮播图,如下图:


这就非常丑陋了,完全不可行啊,尝试了各种方法,始终不能解决,不知道是element的bug,还是我程序的bug,最后再次翻阅官方文档看到el-image组件下,有这样一个属性ImageViewer 属性


看一下说明,这不就是轮播图吗?是可以自定义轮播图组件吗?官网文档也没有这个组件的具体说明,只能自己摸索了。(截至于发文时间即2022-14-19,官方文档仍然没有此组件说明。)

首先修改el-image代码,去掉preview-src-list属性,给image监听click事件,用来触发轮播图,需要传递一个index参数,之后会用到。

<el-table-column label="图片">
    <template #default="{row,$index}">
        <el-image @click="handleImg($index)" style="width:70px;" fit="cover" :src="row.url">
        </el-image>
    </template>
    </el-table-column>

再添加一个el-image-viewer组件,代码如下,其中属性可以看官方文档,这里就不再重复。

v-if用来控制是否展示,当image触发click事件后,使showViewer=true

<el-image-viewer :infinite="false" :initial-index="initialIndex"     :hide-on-click-modal="true" v-if="showViewer"
        @close="showViewer=false" :url-list="srcList" />

handleImg方法,就是展示轮播图,并且传递index,使得轮播图从当前点击的图片开始为第一张图片,如果不传递,则会是整个数组的第一个图片。

const handleImg = (index) => {
    state.initialIndex = index
    state.showViewer = true
}

好了,现在就能正常显示了,如下图:



本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客