zoukankan      html  css  js  c++  java
  • js和jquery实现图片无缝轮播的不同写法

    多掌握一种方法总是会有好处的,学习编程就要多思考,举一反三

    下面写一下实现图片自动播放的代码,由于学习的是javascript,代码量很大,所以又学习了jquery库的操作,非常简便

    还有非常有逼格的三元运算: 条件 ?(表示True) do something :(表示False) do others

    这是css代码

    * {
        padding:0;
        margin:0;
    }
    ul {
        list-style:none;
    }
    .box {
        width:240px;
        height:180px;
        /*在这里必须要设置高度,因为里面只有一个ul,而我们给ul设置的是绝对定位,提升了层级,那么box文档流中*/
        /*没有元素撑开box的高度,所以我们要给其设置固定高度*/
        background:lightgray;
        margin:200px auto;
        overflow:hidden;
        position:relative;
    }
    ul {
        width:400%;
        height:180px;
        position:absolute;
        top:0;
        left:0;
        background:red;
    }
    
    ul li {
        float:left;
    }

    这是html + js代码

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>a website</title>
            <link rel = "stylesheet" href = "css.css" type = "text/css">
        </head>
        <body>
        <div class = "box">
            <ul class = "u">
                <li><img src = "img/01.jpg"></li>
                <li><img src = "img/02.jpg"></li>
                <li><img src = "img/03.jpg"></li>
                <li><img src = "img/04.jpg"></li>
            </ul>
        </div>
        </body>
        <script src = "jquery-3.2.1.js"></script>
        <script type = "text/javascript">
    //        想要实现的效果:
    //        1.打开网页,图片自动往左移动,当4张图片都移动完之后又重新移动,实现无缝轮播的效果
    //        2.当鼠标滑到图片区域图片会停止轮播
    //        3.当鼠标滑出图片区域图片会按照原来的位置继续轮播
    //        方法一:基于javascript来实现
    //        window.onload = function() {
    //            var box = document.getElementsByClassName("box")[0];
    //            var ul = document.getElementsByTagName("ul")[0];
    //            var count = 0;
    //            var timer = null;
    //            function func(){
    //                count--;
    //                count < -720 ? count=0 : count;
    //                ul.style.left = count + "px";
    //            }
    //            timer = setInterval(func,20);
    //            box.onmouseover = function(){
    //                clearInterval(timer)
    //            }
    //            box.onmouseout = function(){
    //                timer = setInterval(func,20);
    //            }
    //            }
    
    //            方法二:基于jquery实现
                $(function(){
                    var count = 0;
                    var timer = null;
                    function func(){
                        count --;
                        count < -720 ? count = 0
                        :$("ul").css("left",count)
                    }
                    timer = setInterval(func,20);
                    $(".box").mouseover(function(){
                        clearInterval(timer);
                    });
                    $(".box").mouseout(function(){
                        timer = setInterval(func,20);
                    });
                });
    
    //            现在我们加一个按钮控制轮播动画的位置
    //            $(".box").before("<button>移动</button>");
    //            $("button").click(function(){
    //                $(".box").css("margin","20px auto")
    //            })
    //              或者加一个按钮让轮播位置产生动画效果
    //              $(".box").before("<button>移动</button>");
    //              $("button").click(function(){
    //                  $(".box").toggle(1000)
    //              })
        </script>
    </html>
  • 相关阅读:
    django之表设计、路由层等
    django之三剑客、静态文件配置、请求响应对象、数据库操作
    djang小项目过程中的小问题 02(跳转界面)
    生鲜超市项目错误及解决办法(crispy_forms、外键指向自己、class嵌套访问父类、meta类及各种字段参数)
    生鲜超市项目错误及解决办法(安装mysqlclient)
    djang小项目过程中的小问题 01(django中的configrarion配置、django自带命名规范)
    react-Hook
    react中登录注册 使用验证码验证
    react状态管理器之mobx
    react中的虚拟DOM,jsx,diff算法。让代码更高效
  • 原文地址:https://www.cnblogs.com/tarantino/p/8854850.html
Copyright © 2011-2022 走看看