zoukankan      html  css  js  c++  java
  • javascript无缝滚动原理

    相比之下,无缝拼接能避免切换时出现空白,使用户体验更好!

    无缝滚动原理:

    制作一个双胞胎,内容跟主体内容一致,样式一致,如果横向排列则并排,当切换的时候,就可以弥补主体空白的地方,其他按普通循环操作即可。

    源码:

    <!DOCTYPE html>
    <html lang="zn-ch">
    
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
        <style>
    .slide-box{margin:0 auto;width:300px;height:100px;overflow:hidden}
    .slide-box-inner{width:600px;height:100px}
    .slide-content,.slide-copy{float:left;height:100px}
    .slide-content a,.slide-copy a{display:block;width:100px;height:100px;text-align:center;line-height:100px;color:#fff;text-decoration:none;float:left}
    .box1{background:#4A88C6}
    .box2{background:#EC118E}
    .box3{background:#1AA3A9}
    
        </style>
    </head>
    
    <body>
        <div class="slide-box" id="slideBox">
            <div class="slide-box-inner">
                <div class="slide-content" id="slideContent">
                    <a href="#" class="box1">No1</a><a href="#" class="box2">No2</a><a href="#" class="box3">No3</a>
                </div>
                <!-- 双胞胎兄弟 -->
                <div class="slide-copy" id="slideCopy">
                </div>
            </div>
        </div>
        <script type="text/javascript" language="javascript">
        //大层
        var slideBox = document.getElementById("slideBox");
        //内容层
        var slideContent = document.getElementById("slideContent");
        //拼接层
        var slideCopy = document.getElementById("slideCopy");
        //循环相隔时间
        var speed = 10;
        //复制内容
        slideCopy.innerHTML = slideContent.innerHTML;
    
        // *无缝切换函数,滚动值>=可视宽度,归0,否则数值递增
        function seamlessSlide() {
            var seeWidth = slideContent.offsetWidth;
            if (slideBox.scrollLeft >= seeWidth) {
                slideBox.scrollLeft = 0;
            } else {
                slideBox.scrollLeft++;
            }
        }
    
    
    
        //每10毫秒循环执行slide
        var runslide = setInterval(seamlessSlide, speed);
        //鼠标移到大层,循环终止
        slideBox.onmouseover = function() {
                clearInterval(runslide);
            }
            // //鼠标移开时,继续循环
        slideBox.onmouseout = function() {
            setTimeout(function() {
                runslide = setInterval(seamlessSlide, speed);
            }, 300);
        }
        </script>
    </body>
    
    </html>
  • 相关阅读:
    1014 Waiting in Line (30)(30 point(s))
    1013 Battle Over Cities (25)(25 point(s))
    1012 The Best Rank (25)(25 point(s))
    1011 World Cup Betting (20)(20 point(s))
    1010 Radix (25)(25 point(s))
    1009 Product of Polynomials (25)(25 point(s))
    1008 Elevator (20)(20 point(s))
    1007 Maximum Subsequence Sum (25)(25 point(s))
    1006 Sign In and Sign Out (25)(25 point(s))
    1005 Spell It Right (20)(20 point(s))
  • 原文地址:https://www.cnblogs.com/tinyphp/p/4890838.html
Copyright © 2011-2022 走看看