Swiper页面尺寸改变时,无法实现自适应

作者:Administrator 发布时间: 2021-07-19 阅读量:5 评论数:0

问题:在页面全屏状态下,swiper img没有自动去铺满Dom

非全屏:img铺满了Dom

C9D7183B-9201-4354-BD9F-23C73BB63033.png

全屏:可以明显看到下面的空白区域

849EDDA8-30B7-4A18-A7B9-F2A08E391856.png

问题分析:

F12, 查看全屏状态下图片与Dom的样式。

可以看到图片和上级的Dom样式高度为304;而swiper-container的高度为350。

猜想可能是页面Resize时候,Swiper没有更新导致了。

BB3D7A62-F600-40D0-AA30-0A0419E5AB92.png

E04FF254-62DF-4E97-BA33-20A418F79A2E.png

解决方案:

强制让Dom在window.onResize时重新渲染,再查看图片高度变化。

测试没问题ok

DB50612B-6F85-45CF-B52E-3B5616BCA397.png

//dom
<div id="banner">
        <div class="swiper-container" v-if="reRender">
            <div class="swiper-wrapper">
                <div class="swiper-slide" v-for="(item,index) in imgs" :key="index">
                    <img  @click="routerUrl(item)" :src="getUrl(item.url)" alt="">
                </div>
            </div>
            <!-- 如果需要分页器 -->
            <div class="swiper-pagination"></div>
        </div>
    </div>
//methods
forceRerender() {
            // 从 DOM 中删除 my-component 组件
            this.reRender = false;
            this.$nextTick(() => {
                // 在 DOM 中添加 my-component 组件
                this.reRender = true;
                this.getBannerList();
            });
},
//
created() {
        window.onresize = () => {
            this.forceRerender();
        };
        this.getBannerList();
    },

评论