zoukankan      html  css  js  c++  java
  • 循环滚动

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <style>
    *{margin:0; padding:0; list-style:none;}
    
    .focus{width:500px; height:300px; overflow:hidden; zoom:1;}
    .f-l,.f-r{display:inline; height:300px; position:relative; overflow:hidden;}
    .f-l{float:left; width:30px;}
    .f-r{float:right; width:450px; background:#9F0;}
    
    .f-l li,.f-r li{text-align:center;}
    .f-l li{width:30px; height:100px; background:#666; line-height:100px; overflow:hidden;}
    .f-l li.on{background:#06C;}
    .f-r li{width:450px; height:300px; line-height:300px;}
    
    .f-l ul,.f-r ul{position:absolute; top:0; left:0;}
    </style>
    </head>
    
    <body>
    <div id="focus" class="focus">
        <div class="f-l">
            <ul>
                <li class="on">1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
                <li>6</li>
                <li>7</li>
                <li>8</li>
            </ul>
        </div>
        
        <div class="f-r">
            <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
                <li>6</li>
                <li>7</li>
                <li>8</li>
            </ul>
        </div>
    </div>
    
    <script>
    function getByClass(sClass,oParent){
        if(document.getElementsByClassName){
            return (oParent || document).getElementsByClassName(sClass);
        }else{
            var aEle = (oParent || document).getElementsByTagName('*');
            var r = [];
            var reg = new RegExp('\b'+sClass+'\b','i');
            
            for(var i=0; i<aEle.length; i++){
                if(reg.test(aEle[i].className)){
                    r.push(aEle[i]);
                }
            }
            
            return r;
        }
    }
    
    function getStyle(name,obj){
        return obj.currentStyle ? obj.currentStyle[name] : getComputedStyle(obj,false)[name] ;
    }
    
    function startMove(obj,json,fn){
        clearInterval(obj.timer);
        obj.timer = setInterval(function(){
            var b = true;
            for(var name in json){
                var cur = parseInt(getStyle(name,obj));
                var speed = (json[name] - cur)/5;
                speed=speed>0 ? Math.ceil(speed) : Math.floor(speed);
                    obj.style[name] = cur+speed+'px';            
                if(cur != json[name]){
                    b = false;
                }
            }
            if(b){
                clearInterval(obj.timer);
                fn && fn();
            }
        },30);
    }
    
    var oDiv = document.getElementById('focus');
    var oUl1 = getByClass('f-l',oDiv)[0].getElementsByTagName('ul')[0];
    var oUl2= getByClass('f-r',oDiv)[0].getElementsByTagName('ul')[0];
    oUl2.innerHTML=oUl2.innerHTML+oUl2.innerHTML;
    oUl1.innerHTML=oUl1.innerHTML+oUl1.innerHTML;
    var nIndex=0;
    var aLi1 = oUl1.getElementsByTagName('li');
    var aLi2 = oUl2.getElementsByTagName('li');
    
    var h = aLi1[0].offsetHeight;
    var h2 = aLi2[0].offsetHeight;
    
    for(var i=0; i<aLi1.length; i++){
        (function(i){
        aLi1[i].onclick = function(){
            nIndex=i;
            for(var j=0; j<aLi1.length; j++){
                aLi1[j].className = '';
            }
            this.className = 'on';
            if(i<aLi1.length/2){
                startMove(oUl2,{top:-h2*i});
                startMove(oUl1,{top:-h*i});
            }else{
                nIndex=nIndex-aLi1.length/2;
                aLi1[nIndex].className = 'on';
                startMove(oUl2,{top:-h2*i},function(){oUl2.style.top=-(i-aLi1.length/2)*h2+"px"});
                startMove(oUl1,{top:-h*i},function(){oUl1.style.top=-(i-aLi1.length/2)*h+"px",aLi1[i].className = '';});    
            }
        };
        })(i)
    }
    
        var timer=null;
        oDiv.onmouseover=function(){
            clearInterval(timer)
        }
        oDiv.onmouseout=function(){
            timer=setInterval(function(){
                aLi1[nIndex].onclick();
                console.log(nIndex)
                nIndex++;
            },1000)
    }
    oDiv.onmouseout();
    </script>
    </body>
    </html>
  • 相关阅读:
    JavaScript 代码简洁之道
    SpringBoot究竟是如何跑起来的?
    JavaScript是如何工作的: Web推送通知的机制
    Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
    Maven入门教程
    浏览器缓存机制
    JavaScript是如何工作的:Service Worker的生命周期及使用场景
    深入浅出浏览器渲染原理
    JavaScript是如何工作的:Web Workers的构建块 + 5个使用他们的场景
    ASP.NET Core MVC中URL和数据模型的匹配
  • 原文地址:https://www.cnblogs.com/busicu/p/4095371.html
Copyright © 2011-2022 走看看