Swiper使用时pc端有轮播,mobile无轮播,或mobile有轮播,PC无轮播的自适应写法。

背景:
在日常双端开发时,有时候会遇到比较特殊的轮播需求,比如标题中所写的那种形式,只适应一个单端的轮播图,另一个端要不破环样式。当我们正常使用swiper轮播的时候,使用浏览器自带的调试工具时,每次来回切换就会破环界面的ui,所以刷新就可以解决,对于我这种强迫症患者来说,不是那么舒适,在网上搜了很多方法,并不能完美的解决。

错误写法:
本来我的想法是,在pc的时候init,在mobile进行destroy,但是我发现这样进行操作的时候还是会有问题,在来回切换的时候样式去不掉,会错乱。

错误写法-方式1:


        var newSwiper = new Swiper('.swiper-container', {
            loop: true,
            slidesPerView: 1,
            speed: 500
        });

        $(window).resize(function () {

            if ($(window).width() < 768) {
                newSwiper.init();
            } else {
                newSwiper.destroy()
            }

        })

错误写法-方式2:
在前端我发现当mobile应用的时候,转变为pc的时候,差别仅仅只是因为在warp 和 slider 上面多了 style的样式,如果手动去掉的话,样式就可以恢复正常。在这里插入图片描述
因此使用了这样的写法,但是并没有起到作用,后来发现其实是有作用的,只不过轮播图的销毁速度是在移除style之后的,所以,即使使用这种写法也无法起作用。

        function initSwiper() {
            var screenWidth = $(window).width();
            if (screenWidth < 768) {
                var newSwiper = new Swiper('.swiper-container', {
                    loop: true,
                    slidesPerView: 1,
                    speed: 500
                });
            } else if (screenWidth > 768) {
                newSwiper.destroy();
                $(".swiper-wrapper").removeAttr("style");
                $(".swiper-slide").removeAttr("style");
            }
        }
        initSwiper();

        $(window).resize(function () {
            initSwiper();
        })

正确写法:
在生成swiper对象的时候给它赋一个值,这样在每次销毁后,再赋值,这样就可以完全销毁掉,且不影响移除style这个js的先手顺序,就可以完美的解决了,写法如下。

        var newSwiper = undefined;
        function initSwiper() {
            var screenWidth = $(window).width();
            if (screenWidth < 768 && newSwiper == undefined) {
                newSwiper = new Swiper('.swiper-container', {
                    loop: true,
                    slidesPerView: 1,
                    speed: 500
                });
            } else if (screenWidth > 768 && newSwiper != undefined) {
                newSwiper.destroy();
                newSwiper = undefined;
                $(".swiper-wrapper").removeAttr("style");
                $(".swiper-slide").removeAttr("style");
            }
        }
        initSwiper();

总结:
在日常开发的时候会遇到各种奇奇怪怪的需求,可能在使用某些插件的时候,并不能完全符合你想要的前端效果,要进行二次开发,这就需要我们细心发现,认真归纳方法,这样才可以解决问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swiper全屏自适应轮播图片尺寸是指使用Swiper这个轮播插件来实现全屏自适应的图片尺寸展示。Swiper是一个基于原生JavaScript的轮播插件,可以通过设置参数来实现全屏自适应的效果。 首先,我们需要准备好轮播图片,保证图片的尺寸符合要求。一般来说,我们最好将图片尺寸设置为与屏幕分辨率相同或者相近的大小,这样可以在不同的设备上展示出较高的清晰度。 然后,在HTML中引入SwiperCSSJS文件,并创建一个容器来放置轮播图片。 接下来,在JavaScript中初始化Swiper插件,设置相关参数。其中,我们需要将轮播容器的宽度和高度设置为100%来实现全屏自适应的效果。可以将容器的宽度和高度设置为浏览器视口的宽度和高度,使用`window.innerWidth`和`window.innerHeight`来获取。 另外,我们还可以设置`effect`参数为"slide"或者"fade",来定义轮播的切换效果。还可以设置`autoplay`参数为true,来自动播放轮播图片。 最后,加载页面Swiper会自动根据设置的参数和轮播容器的尺寸来适应图片展示。当屏幕尺寸改变Swiper会自动重新计算并调整图片的尺寸,以达到全屏自适应的效果。 综上所述,通过设置合适的参数和容器尺寸,我们可以实现Swiper全屏自适应轮播图片的效果。这样,无论在不同的设备上,轮播图片都能以适应屏幕的方式展示,提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值