无缝幻灯片2

上一篇写了一个无缝幻灯片。但是一个朋友说。我那个只适合做纯效果。如果在上面有一些操作,就会报错。

比如说:oul.getElementsByTagName(“li”)[0].这个时候没3秒钟返回的节点是一样的。在变化。针对这个需求,我就重新了一个。希望对大家有帮助。

<!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;
           }
           li.text{
               position: absolute;
               top:0;
           }
        </style>
    </head>
    <body>
        <div id="zd">
            <ul>
                <li style="background:#ff00ff" data-index="0"></li>
                <li style="background:#ff0010" data-index="1"></li>
                <li style="background:#0000ff" data-index="2"></li>
            </ul>
        </div>
        <script>
              var timer=null;
              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,call){
               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);
                          if(call)call();
                       }
                       if(funEnd)funEnd();
                   }
               },30)
            }
              var oul=$("zd").getElementsByTagName("ul")[0],
                  oli=oul.getElementsByTagName("li"),
                  u=0,
                  oliW=oli[0].offsetWidth;
                  for (var i = 0; i < oli.length; i++) {
                      oli[i].className="text";
                      oli[i].style.left=oliW*i+"px";
                  };
            var timersd=setInterval(function(){
                   for (var i = 0; i < oli.length; i++) {
                           calls(i);
                           var oliL=oli[i].offsetLeft;
                           if(oliL%oliW==0){
                              Stratmove(oli[i],{"left":oliL-oliW},null);
                           }
                      };
            },3000)
            function calls(z){
                   var oliL=oli[z].offsetLeft;
                      if(oli[z].offsetLeft==-oliW){
                       oli[z].style.left=oliW*(oli.length-1)+"px";
                  }

            }
        </script>
    </body>
</html>

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

时间: 2024-10-06 16:23:52

无缝幻灯片2的相关文章

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

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

JS 实现无缝滚动动画原理(初学者入)

这段时间在教培训班的学生使用原生javascript实现无缝滚动的动画案例,做了这个原理演示的动画,分享给自学JS的朋友!博主希望对你们有帮助! 在讲解之前先看一下demo: demo:https://224137748.github.io/JS_warehouse/lunbo/domo.HTML源码:https://github.com/224137748/JS_warehouse/blob/master/lunbo/domo.HTML ps: 上面和下面的滚动进度是一致的,上面红色框是为了演

viewpager实现无限循环滚动幻灯片

一直想做循环滑动幻灯片的效果,类似pptv等的首页效果十分抱歉,不会整gif动图--- 废话少说,先上图看效果:    思路是:设置pageradapter的count为Integer.MAX_VALUE,但实际的item只有几个,用取余的方式取item,在设置adapter时同时设置currentItem为实际item数的N倍(足够大就好).这样就可以左右无缝循环滑动!(毕竟你不可能滑上亿次),并且不用担心内存问题,就那几个玩意--- 这里不能用FragmentPagerAdapter或Fra

JS连续滚动幻灯片:原理与实现

什么是连续滚动幻灯片?打开一些网站的首页,你会发现有一块这样的区域:一张图片,隔一段时间滑动切换下一张:同时,图片两端各有一个小按钮,供你手动点选下一张:底部有一排小圆圈,供你选定特定的某帧图片.这就是“连续滚动幻灯片”(我自己的叫法,当然它也可能叫焦点轮播图,轮播图等等等等),本文单讲手动连续切换,不涉及自动播放和底部小圆圈. 实现这种幻灯片有几个难点: 1.图片放置:你需要把所有图片放入一个div(这里就把它的class叫做pics吧)中,再把pics放入一个更大的div(就命名为conta

PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子

因为近期给朋友公司做个门户网站,把荒置了6.7年的PHP又重新拾起,发现PHP这些年兴旺多了,很多新的东西看的不明不白,研究了几个框架ZendFramework.thinkphp.Symfony.yii2,也曾经考虑直接用网上现有的开源cms,要么因为商用授权太贵,要么后台太复杂,要么覆盖行业太多导致业务复杂,看了一通代码,头晕得很,最终选择yii2自己开发个轻量的cms+shop系统,慢慢的做,应该能做出后台简单.有自己特色的网站系统来!一下是我的一些开发过程和经验,因为没有考虑太多的技术和通

18款 非常实用 jquery幻灯片图片切换

1.jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动 jquery图片特效制作仿腾讯QQ商城首页banner焦点图片轮播切换效果,带索引按钮控制和左右按钮控制图片切换. 查看演示>>          下载地址 2.jquery图片切换插件制作图片层叠缩放展示效果 jquery图片插件制作图片等比列缩放层叠样式,图片叠加展示.点击层叠最上层的图片依次点击缩放图片层叠缩放切换. 查看演示>> 下载地址 3.jquery图像幻灯片制作大小图片切换滚动展示 jquery图像幻

JS 仿淘宝幻灯片 非完整版 小案例

仿淘宝幻灯片,基础版,后期效果是要做到每次点击小圆点,切换都无缝 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 "http://www.w3.org/TR/html4/strict.dtd"> 3 4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 5 <head> 6

JavaScript打造无缝切换

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io/ 起因 一年前写管理学院的时候,那时候做首页有一个幻灯片,由于之前没交流好,CL写的静态页面幻灯片图片是在背景里,让我用jq写, 当时就感觉特别啃爹,图片写在了css里..好坑爹,自己又懒得改,只能硬着头皮用jq写,一堆临时变量,如num++,各种奇葩,最后加了 个jq淡隐淡出的效果,就交差了,,代码如下:   function trim(s) { return s.replace(/^\s*/, ""

JS实现Li列表的无缝垂直文字滚动代码

非Table模式的新闻列表滚动,学习CSS的朋友可能都能做出这种效果来.运用了CSS中的Li列表标签,加上javaScript代码控制,完成完美的无缝滚动效果.在兼容性方面,在ie6,7,8,9,firefox等主流浏览器下均测试通过,用的时候您只需改变一下样式和大小,再将Js封装起来,用时候调用,就更简洁了,相信这款实用的文字滚动正是你需要的. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http