js 实现横向滚动轮播并中间暂停下

效果:

html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <title>滚动+停顿</title>
        <style type="text/css">
            body {
                margin: 0;
            }

            #container {
                position: relative;
                height: 200px;
                overflow: hidden;
            }

            #list {
                position: absolute;
                z-index: 1;
                width: 4200px;
                height: 200px;
            }

            #list .item {
                float: left;
                text-align: center;
            }

            .slide {
                width: 200px;
                height: 200px;
            }
        </style>
        <script src="js/jquery.js"></script>
    </head>
    <body>
        <div id="container" class="container">
            <div id="list"></div>
        </div>
        <script type="text/javascript" language=javascript>
            window.qglist = [{
                    gimg: ‘img/1.jpg‘,
                    gname: ‘111‘
                },
                {
                    gimg: ‘img/2.jpg‘,
                    gname: ‘222‘
                },
                {
                    gimg: ‘img/3.jpg‘,
                    gname: ‘333‘
                }
            ];
            initScroll();

            function initScroll() {
                var len = window.qglist.length,
                    j = 0,
                    l = window.qglist.length - 1,
                    string1 = makeStr(window.qglist, l),
                    string2 = makeStr(window.qglist, 0);
                $(‘#list‘).append(string1);
                while (j < len) {
                    var string = makeStr(window.qglist, j);
                    $(‘#list‘).append(string);
                    j++;
                }
                $(‘#list‘).append(string2);
                window.scrWid = $(‘.container‘)[0].offsetWidth + ‘px‘;
                $(‘#list‘).css("left", ‘-‘ + scrWid);
                $(‘.item‘).css("width", scrWid);
                var container = $(‘#container‘),
                    list = document.getElementById(‘list‘),
                    index = 1,
                    timer;

                function animate(offset, unit) {
                    var newLeft = parseInt(list.style.left) - unit,
                        newL = Math.abs(newLeft),
                        scrW = parseInt(window.scrWid),
                        num = newL % scrW;
                    if (num == 0) {
                        stop();
                        setTimeout(function() {
                            play();
                        }, 2000);
                    }
                    list.style.left = newLeft + ‘px‘;
                    //无限滚动判断
                    if (newLeft > offset) {
                        list.style.left = offset * len + ‘px‘;
                    }
                    if (newLeft < offset * (len + 1)) {
                        list.style.left = offset + ‘px‘;
                    }
                }

                function play() {
                    //重复执行的定时器
                    timer = setInterval(function() {
                        start();
                    }, 1)
                }

                function stop() {
                    clearInterval(timer);
                }

                function start() {
                    if (index > len) {
                        index = 1
                    }
                    var n = parseInt(scrWid);
                    animate(-n, 1);
                    index += 1;
                };
                if (len > 1) {
                    play();
                }
            }

            function makeStr(arr, n) {
                var str = "<div class=‘item‘><div>" +
                    "<img class=‘slide‘ src=‘" + arr[n].gimg + "‘></div></div>";
                return str;
            }
        </script>
    </body>
</html>

原文地址:https://www.cnblogs.com/linjiangxian/p/11460764.html

时间: 2024-11-07 22:52:51

js 实现横向滚动轮播并中间暂停下的相关文章

横向滚动轮播图

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <link rel="stylesheet" type="text/css" href="css/reset.css" /> <style type="text/css">

H5滚动轮播插件

  概述 JRedu 随着前端技术的发展,越来越多的H5技术被应用到实际开发中,尤其是js插件更是无处不用,本章节我们主要分享下如何去自己封装一个滚动轮播插件. 1效果图如下: 2主要功能   支持超简单使用 支持数据类型json对象 支持自动切换 支持前后翻页 支持分页点图 支持动画过渡 ... 后续功能可以自己酌情添加 3实现方式 首先 ,我们需要一个容器,在这里只需要一个div就可以了,通过div的id就可以识别该容器,代码如下 <div id="div1" style=&

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

js原生选项(自动播放无缝滚动轮播图)二

今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走的代码,也可以放向左走的代码,然后在js加载的时候先执行一次,保证页面加载的时候轮播图是自动播放的,当然在鼠标悬停在遮罩层的时候我们需要清除这个定时器,让自动播放功能关闭,然后在鼠标再次移出遮罩层的时候再次开启定时器,这样就实现了自动播放的功能.然后今天的轮播图中我添加了开关的功能,这个开关是为了避

简单的左右滚动轮播图

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .slide { width: 100%; height: 100%; } .slider{ width: 100%; height: 100%; position: relative; cursor:

JS实现焦点图轮播效果

大家平时逛淘宝网的时候,在首页就能看到焦点图轮播的效果,就是这个样子的: PS:想起每每打开淘宝,总会被这个玩意先夺眼球,偶尔还去点进去溜溜,幸好我定力好,总能控制住自己的购买欲望,为自己不用剁手感到欣慰 ! 好吧,其实说白了就是穷,就是没钱,就是不能好好地任性,所以只能先去慕课网找教程学习把它给做出来! OK,首先将HTML结构搭建好先: <div id="container"> <div id="list" style="left:

移动端原生js,css3实现轮播图

一.功能需求 1.自动播放2.滑动切换3.点击切换 二.思路分析 html代码: <div class="container"> <ul class="list clearfix"> <li class="item fl item5">图5</li> <li class="item fl item1">图1</li> <li class="

Android自动滚动 轮播循环的ViewPager

主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用.顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题. 项目已开源Android Auto Scroll [email protected],欢迎star和fork. 示例APK可从这些地址下载:Google Play,  360手机助手,  百度手机助手,  小米应用商店,  豌豆荚 示例代码地址见AutoScrollViewPagerDemo,效