javascript焦点图之缓冲滚动无缝切换

在用于实现无缝切换四张图,所以设置了6个图片就是 4,0,1,2,3,4,0

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
            font-size: 12px;
        }

        #ptoDiv {
            width: 400px;
            height: 200px;
            margin: 50px auto 0;
            position: relative;
            overflow: hidden;
        }

        #ptoBox {
            width: 2400px;
            height: 200px;
            position: absolute;
            left: -400px;
        }

        #pto {
            list-style-type: none;
        }

        .base {
            width: 400px;
            height: 200px;
            float: left;
        }

        .base1 {
            background: red;
        }

        .base2 {
            background: blue;
        }

        .base3 {
            background: pink;
        }

        .base4 {
            background: green;
        }

        #btn1 {
            position: absolute;
            width: 30px;
            height: 30px;
            background: yellow;
            top: 85px;
            left: 0;
            opacity: 0.5;
            filter: alpha(opacity=50);
            cursor: pointer;
        }

        #btn2 {
            position: absolute;
            width: 30px;
            height: 30px;
            background: yellow;
            top: 85px;
            right: 0;
            opacity: 0.5;
            filter: alpha(opacity=50);
            cursor: pointer;
        }

        #cirBox {
            width: 80px;
            height: 16px;
            position: absolute;
            top: 160px;
            left: 160px;
        }
        /*16*4+4*4*/

        #cir {
            list-style-type: none;
            position: relative;
        }

        #cir li {
            float: left;
            width: 16px;
            height: 16px;
            margin: 0 2px;
            background: white;
        }

        #cir .on {
            width: 16px;
            height: 16px;
            background: yellow;
        }
    </style>

</head>

<body>
    <div id="ptoDiv">
        <div id="ptoBox">
            <ul id="pto">
                <li class="base base4">four</li>
                <li class="base base1">one</li>
                <li class="base base2">two</li>
                <li class="base base3">three</li>
                <li class="base base4">four</li>
                <li class="base base1">one</li>
            </ul>
        </div>

        <span id="btn1"></span>
        <span id="btn2"></span>

        <div id="cirBox">
            <ul id="cir">
                <li class="on"></li>
                <li></li>
                <li></li>
                <li></li>

            </ul>
        </div>
    </div>
</body>

</html>

<script src="changfunction.js"></script>这个是已经写好的库,用于改变图片的切换

  1 <script src="changfunction.js"></script>
  2 <script>
  3 function $(id) {
  4     return typeof id === "string" ? document.getElementById(id) : id;
  5 }
  6 window.onload = function() {
  7         var btnLeft = $("btn1");
  8         var btnRight = $("btn2");
  9         var pto = $("pto").getElementsByTagName("li");
 10         var ptoBox = $("ptoBox");
 11         var cir = $("cir").getElementsByTagName("li");
 12         var timer = null;
 13         var Div = $("ptoDiv");
 14         var index = 1;
 15         var length = 400;
 16
 17         /*for (var i = 0; i < cir.length; i++) {
 18             cir[i].id = i;
 19             cir[i].onmouseenter = function() {
 20                 clearOn();
 21                 showOn(this.id);
 22                 changeBtn(ptoBox, {
 23                     left: (-400 * this.id)
 24                 });
 25             }
 26         }*/
 27
 28         //两个btnLeft绑定事件,改变透明度
 29         btnLeft.onmouseenter = function() {
 30             changeBtn(btnLeft, {
 31                 opacity: 100
 32             });
 33         }
 34
 35         btnLeft.onmouseleave = function() {
 36                 changeBtn(btnLeft, {
 37                     opacity: 50
 38                 });
 39             }
 40             //两个btnRight绑定事件,改变透明度
 41         btnRight.onmouseenter = function() {
 42             changeBtn(btnRight, {
 43                 opacity: 100
 44             });
 45         }
 46
 47         btnRight.onmouseleave = function() {
 48             changeBtn(btnRight, {
 49                 opacity: 50
 50             });
 51         }
 52
 53         //btnRight鼠标点击绑定事件
 54         btnRight.onclick = function() {
 55             console.log(index);
 56             //全局变量index为当前图片的序号
 57             if (index < pto.length - 1) {
 58                 //index不大于4时,则自增1
 59                 index++;
 60             } else {
 61                 //大于4,则index从第三张图片开始
 62                 index = 2;
 63                 ptoBox.style[‘left‘] = -400 + ‘px‘;
 64             }
 65             //调用函数(通过缓冲显示图片)
 66             changeBtn(ptoBox, {
 67                 left: (-400 * index)
 68             });
 69             //清除函数
 70             clearOn();
 71             //显示图片函数
 72             showOn(index);
 73         }
 74
 75         //鼠标左键绑定事件,同理
 76         btnLeft.onclick = function() {
 77             if (index == 0) {
 78                 index = pto.length - 3;
 79                 ptoBox.style[‘left‘] = -1600 + ‘px‘;
 80             } else {
 81                 index--;
 82             }
 83             changeBtn(ptoBox, {
 84                 left: (-400 * index)
 85             });
 86             clearOn();
 87             showOn(index);
 88
 89         }
 90
 91         //清楚已经显示的小框
 92         function clearOn() {
 93             for (var i = 0; i < cir.length; i++) {
 94                 cir[i].className = "";
 95             }
 96         }
 97
 98         //显示当前的小框
 99         function showOn(x) {
100             //因为框只有四个,所以需要做一个强制转换
101             //当x的值到达0和5的时候,重新给x赋值
102             if (x == 0) {
103                 x = 4;
104             }
105             if (x == 5) {
106                 x = 1;
107             }
108             for (var i = 0; i < cir.length; i++) {
109                 if (i == (x - 1)) {
110                     cir[i].className = "on";
111                 }
112
113                 // index = x;
114             }
115         }
116
117         //自动循环函数
118         function start() {
119             timer = setInterval(function() {
120                 btnRight.onclick();
121             }, 3000);
122
123         }
124         //停止函数
125         function stop() {
126             clearInterval(timer);
127         }
128
129         //当鼠标移动至div则停止
130         Div.onmouseenter = stop;
131         //当鼠标移出则开始
132         Div.onmouseleave = start;
133         //进入页面,则开始自动循环
134         start();
135     }
136     </script>
时间: 2024-10-25 16:35:48

javascript焦点图之缓冲滚动无缝切换的相关文章

javascript焦点图(暂时不能自动切换)

<!DOCTYPE > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <link rel="stylesheet" type="text/css" href="css.css"/> <title></titl

javascript焦点图(能够自己主动切换 )

/* 思路总结: 1.实现图片滚动的function.鼠标经时候获取当前li的index.设置ndex自己主动递增的函数.实现淡入淡出效果的函数 2.整个实现效果一传递index为主线 3.我的编写代码过程 ---->a.先编写好实现图片切换的函数,这里主要是包括for历遍所以图片并设置display为none和传递index(这里把index赋值给inew): ---->b.编写鼠标经过时候获取index,这里必须通过历遍和赋值把鼠标经过的index赋值个inew,并传递给能够实现图片切换的

javascript焦点图左右按钮简单自动轮播

这里把css和html合在一块写了,这块代码只是布局和样式不是重点 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>Document</title> 7 <style type="text/css"> 8 * { 9 margin: 0; 10 padding: 0; 11 font-si

10款华丽最新jQuery焦点图动画插件

1.jQuery带对比功能的焦点图插件 我们在这里已经分享过很多炫酷的jQuery焦点图插件,大部分焦点图插件都比较实用.今天要分享的这款有几个特点:第一是焦点图带有缩略图预览功能,第二是焦点图中的图片带有和原图进行对比的功能,并且这款jQuery焦点图还支持定时图片切换,非常实用. 在线演示一 在线演示二 源码下载 2.Devrama Slider - 支持任意 HTML 的内容滑块 Devrama Slider 是一个图片滑块,支持很多特色功能.除了支持图片滑动,其它的 HTML 内容也支持

使用 iscroll 实现焦点图无限循环

  现在大家应该都看到过焦点图轮播的效果,这个效果是什么样我就不截图了.昨天做练习,练习要求是使用iscroll实现焦点图的无限循环滚动,并且当手指触摸焦点图后,停止焦点图的循环滚动.第一次接触iscroll,仿照iscroll官方文档的demo,迅速做了一个焦点图自动滚动的例子,但……是……问题来了,iscroll的官方文档中没有说怎么实现无限循环,不会吧,应该有吧,我抱着怀疑的心态,找啊找,官方文章找了好几个版本,每个版本都看了1.2遍,没有……真的没有……啊,那怎么办…….看来只能自己想了

8款超绚丽的jQuery焦点图动画

随着前端技术和浏览器技术的不断发展,人们开始对网页视觉效果的要求越来越高.我们经常会在页面中看到很多炫酷的图片焦点图播放控件,有些甚至是大屏的焦点图占用大片的页面空间,从而吸引用户的眼球.本文要分享的就是一些超绚丽的jQuery焦点图动画插件,有些不仅基于jQuery,还带有CSS3的动画特效,因此显得更加炫酷. 1.jQuery实用图片滑块焦点图 支持移动端滑动 今天我们要再来介绍一款jQuery实用图片滑块焦点图,它也支持移动端的触屏滑动,这款插件并没有特别的动画效果,但方便实用. 在线演示

8款耀眼的jQuery/HTML5焦点图滑块插件

1.HTML5/CSS3超酷焦点图特效 带前后翻页按钮 今天要分享的这款HTML5/CSS3焦点图插件切换效果比较简单,但是外观和功能却十分强大.该CSS3焦点图在切换图片时,图片以淡入淡出的方式缩小消失并显示下一张图片.焦点图插件还拥有一套非常大气的前后翻页按钮,是一款非常实用HTML5/CSS3焦点图应用. 在线演示 源码下载 2.HTML5/CSS3淡入淡出滑块焦点图 非常清新 我们已经分享过几款简单的CSS3/jQuery焦点图插件,今天要分享的这款焦点图切换时有淡如淡出的动画效果,是利

分享10款常用的jQuery焦点图插件

爱编程一直在收集整理编程相关的知识和解决方案,今天小编为大家带来10款非常常用的jquery焦点图插件. 1.jQuery可自动播放动画的焦点图插件 之前我们已经分享过很多非常实用的jQuery焦点图插件,大部分对开发者来说基本上可以直接拿来使用.今天我们要分享一款可以自动播放动画的jQuery焦点图插件,它在切换图片的时候可以播放对应图片的各种动画效果. 在线预览   源码下载 2.jQuery可自动播放动画的焦点图插件 这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又

超酷实用的jQuery焦点图赏析及源码

焦点图应用在现代网页中使用十分广泛,有注重简单小巧的,也有注重华丽美观的,大部分jQuery焦点图都可以滑动和切换图片,并且在切换图片时产生不同的动画特效.今天我们要分享一些超酷而且实用的jQuery焦点图插件,并分享它们的源代码. 1.jQuery多动画切换焦点图 之前我们已经分享过很多超酷的jQuery焦点图插件了,而且也都相当实用.今天我们要再来介绍一款可实现多种切换动画的jQuery焦点图,这款焦点图整体非常简单,左右两侧各有一个上一张和下一张的切换按钮.每张图片在切换时也都有各不相同的