为什么我的没有效果?

为什么我的没有效果?

直接下载老师的代码也是没有效果。就跟demo1的效果一样,没有progress的效果。是还要设置什么别的吗?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
    <title>swiper基础滑动</title>
    <link href="../js/swiper/idangerous.swiper2.7.6.css" rel="stylesheet">
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        html,
        body {
            width: 100%;
            height: 100%;
        }

        .swiper-container,
        .swiper-wrapper,
        .swiper-slide {
            width: 100%;
            height: 100%;
        }

        .swiper-slide img {
            width: 100%;
            height: 100%;
        }
    </style>
</head>

<body>
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide"><img src="http://img1.sycdn.imooc.com/climg//59f2f3c60001e51206000600.jpg"></div>
            <div class="swiper-slide"><img src="http://img1.sycdn.imooc.com/climg//59f2f3dc0001512e06000533.jpg"></div>
            <div class="swiper-slide"><img src="http://img1.sycdn.imooc.com/climg//59f2f3fb0001725305000707.jpg"></div>
        </div>
    </div>
    <script src="../js/jquery-3.5.1.min.js"></script>
    <script src="../js/swiper/idangerous.swiper2.7.6.min.js"></script>
    <script src="../js/swiper/idangerous.swiper.progress.min.js"></script>
    <script>
        var myswiper = new Swiper('.swiper-container', {
            progress: true,

            onProgressChange: function (swiper) {
                for (var i = 0; i < swiper.slides.length; i++) {
                    var slide = swiper.slides[i];
                    var progress = slide.progress;
                    swiper.setTransform(slide, 'translate3d(0px,0,' + (-Math.abs(progress * 1500)) + 'px)');
                }
            },
            onTouchStart: function (swiper) {
                for (var i = 0; i < swiper.slides.length; i++) {
                    swiper.setTransition(swiper.slides[i], 0);
                }
            },
            onSetWrapperTransition: function (swiper, speed) {
                for (var i = 0; i < swiper.slides.length; i++) {
                    swiper.setTransition(swiper.slides[i], speed);
                }
            }
        })
        for (var i = 0; i < myswiper.slides.length; i++) {
            myswiper.slides[i].style.zIndex = myswiper.slides.length - i;
        }
    </script>
</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,对于你的问题解答如下:

  1. 因为transform-style: preserve-3d; 该属性设置在父级元素中,它的子级元素具有3d效果。perspective: 1200px; 设置观察者到物体的距离。所以设置这两个属性后,js中通过translate3d改变元素位置时,会有一个3d的效果。

  2. 源码中只保留了最后一个例子的js代码,前面示例代码都被注释了,同学想要查看第二个demo的效果,可以打开js中这段注释,测试下效果即可。

    http://img1.sycdn.imooc.com//climg/5ed20505092802a507520725.jpg

  3. 同学的代码与老师的js代码不一样,所以实现的效果会有些差别,具体的可以参考源码对比下。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

提问者 昏睡红茶厘米 2020-05-30 12:19:17

 .swiper-container {

            perspective: 1200px;

        }


        .swiper-wrapper,

        .swiper-slide {

            transform-style: preserve-3d;

        }

设置了这些后我的代码就有效果了,不过老师的例子依旧没效果orz

我不太懂perspective: 1200px;transform-style: preserve-3d;这两句是做什么的,为什么加上就有效果了。视频里老师演示的是只拷贝了js部分的代码就行了,但我也这么做发现不可以。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师