幻灯片无缝滑动(无需重新设置下标)

代码的效果可以直接看文章底部的演示地址,之前的滑动幻灯片我写的有一个小小的bug就是当到了最后一个节点,又需要重新回到第一个节点。从最后回到第一个节点。这个过程浪费了时间。并且不友好。现在我每执行一次,就把写个回调函数,DOM操作把第一个放在最后一个,这样就变成无缝幻灯片了。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
           *{
              margin:0;
              padding:0;
           }
           div{
              width: 600px;
              height: 300px;
              overflow: hidden;
               position: relative;
                 margin:0 auto;
           }
           ul{
               position: absolute;
               left:0;
               top:0;
           }
           li{
              width: 600px;
              height: 300px;
              float: left;
           }
        </style>
    </head>
    <body>
        <div id="zd">
            <ul>
                <li style="background:#ff00ff"></li>
                <li style="background:#ff0010"></li>
                <li style="background:#0000ff"></li>
            </ul>
        </div>
        <script>
        var oul=$("zd").getElementsByTagName("ul")[0],
            oli=oul.getElementsByTagName("li"),
            timers=null,
            timer=null,
            i=0,
            oliW=oli[0].offsetWidth;
            oul.style.width=oli.length*oliW+"px";
            function $(id){
                 return document.getElementById(id);
            }
            function getClass(obj,name){
                if(obj.currentStyle){
                    return obj.currentStyle[name]//IE
                }else{
                     return getComputedStyle(obj,false)[name]//IE
                }
            }
            function Stratmove(obj,json,funEnd,callback){
               clearInterval(obj.timer);
               obj.timer=setInterval(function(){
                   for(var attr in json){
                       var bStop=true,
                           cuur=parseFloat(getClass(obj,attr)),
                           speed=0;
                       if(attr=="opacity"){
                          cuur=Math.round(parseFloat(getClass(obj,attr))*100);
                       }else{
                          cuur=parseFloat(getClass(obj,attr));
                       }
                       speed=(json[attr]-cuur)/8;
                       speed=speed>0?Math.ceil(speed):Math.floor(speed);
                       if(cuur!=json[attr]){
                            bStop=false;
                       }
                       if(attr=="opacity"){
                            obj.style["opacity"]=(cuur+speed)/100;
                            obj.style["filter"]="alpha(opacity="+cuur+speed+")";

                       }else{
                            obj.style[attr]=Math.round(cuur+speed)+"px";
                       }
                       if(bStop){
                          clearInterval(obj.timer);
												  callback();
                       }
                       if(funEnd)funEnd();
                   }
               },30)
            }
            var arr=[];
						timers=setInterval(function(){
						    	Stratmove(oul,{"left":-oliW},null,calls); 

               },3000);
			   		function calls(){
								arr.push(oli[0]);
								oul.removeChild(oli[0]);
								oul.appendChild(arr[0]);
								arr.length=0;
								oul.style.left=0;
					  }
        </script>
    </body>
</html>

演示地址:http://runjs.cn/detail/crxcxlbo

时间: 2024-10-20 05:41:46

幻灯片无缝滑动(无需重新设置下标)的相关文章

如果将缓存“滑动过期时间”设置为1秒会怎样?

今天编写了一个采用ASP.NET Caching的组件,在为它编写Unit Test的过程中发现了一个有趣的问题,接下来我通过一个简单的实例说明这个问题.我们在一个控制台应用中编写了如下一段程序,这个段程序很简单:我们通过HttpRuntime的静态属性Cache得到表示当前缓存的Cache对象,并调用其Insert方法对当前的时间实施缓存.需要注意的是,我们采用“滑动时间”过期策略,并将这个滑动时间设置为1秒.

postgresql 导数据时无需输入密码设置

主要用于pg_dump,psql数据导出和导入时无需输入密码,便于sh脚本后台执行.有2种方法,任何一种都行. 方法一,设置pg环境变量 export PGPASSWORD='yourpassword' 方法二,在pg_hba.conf中添加用户访问认证trust(要重启) #允许来自主机192.168.1.110的所有数据库用户无需认证连接所有数据库 设置: TYPE DATABASE USER ADDRESS METHOD host all all 192.168.12.10/32 trus

macbook pro 苹果鼠标magic mouse2在win10下禁用左右滑动、水平滑动以及其他设置

前段时间入手一台macbook pro,同时购买了一个magic mouse2 相信大部分程序员同志,只要用macbook都回装双系统的,本人也不例外,因为需要用到vs等很多开发工具. magic mouse2在osx上的表现本人不做评论,没用过几回,在win10上的表现太差劲了,特别是对于经常使用代码编辑器的程序员,或者经常使用word.excel之类的工作者,这鼠标简直是煎熬.左右滑动这等高大上的功能,在代码编辑中完全是一锅汤里的老鼠屎,相信用过的都会有体会的.本来你要下拉,却发现它左右滑动

jquery滑动模式的幻灯片组件

效果图 slider.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>slider</title> <link rel="stylesheet" href="../css/base.css"> <link rel="styles

Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭

我们知道.APP在设计上习惯性的把返回button放在屏幕的左上角,那么,在非常多时候(尤其是大屏幕手机),操作改返回button,就会有诸多不便了.为了更加方便实现"返回"功能.如今的一些APP,如百度贴吧等.開始引入一种的新的交互方式,通过滑动屏幕.利用手势事件来高速且友好的实现该功能. 怎样高速实现上图的效果呢.Github上提供了一个开源的库SwipeBackLayout,地址:https://github.com/ikew0ng/SwipeBackLayout , 通过它,我

xib设置UIScrollview

1.添加scrollView,加上下左右约束,比如满屏,设置为0; 2.为scrollView添加子View,作为其contentView; 3.为view加约束,设置上/左/右和高(height); 4.此时,scrollView会报错,不用担心,设置view的约束,距离下方像素,比如设置为0(根据需要设置): 5. 此时设置完还会有警告,别害怕,设置其需要水平滑动还是垂直滑动,OK,设置完成. 注意:(1) Horizontally in container 表示垂直滑动: (2) 无需在代

[转]JVM 堆内存设置原理

堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大. Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Young Generation).年老代和年轻代的划分对垃圾收集影响比较大. 年轻代 所有新生

导航菜单滑动动画

用jquery实现百度新闻导航菜单滑动动画 前言 前两天,群里有人问百度新闻导航是如何实现的,当时由于忙于工作,没有来得及细看,恰好今天有空闲时间,索性就实现一下这个效果吧: 思路与步骤 1.利用UL创建简单横向导航: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&g

JVM堆设置及调优

1.JVM堆设置 -Xmx3550m 设置JVM最大堆内存 为3550M. -Xms3550m 设置JVM初始堆内存 为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -Xss128k 设置每个线程的栈大小.JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K.应当根据应用的线程所需内存大小进行调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右. -Xm