zoukankan      html  css  js  c++  java
  • 使用 JS 实现图片左右跑马灯

    Ø  前言

    之前写了一篇使用 JS 实现文字上下跑马灯,现在乘热打铁在把图片左右跑马灯一起贴出来,不多说直接看代码。

     

    1.   首先定义 css 样式

    <style type="text/css">

        *{

            margin: 0px;

            padding: 0px;

            list-style: none;

        }

        #div1{

            500px;

            height: 125px;

            margin: 60px auto 0px auto;

            border: 2px solid lightgreen;

            position: relative;

            overflow: hidden;

        }

        #ul_img{

            position: absolute;

            top: 0;

            left: 0;

        }

        #ul_img li{

            float: left;

            125px;

            height: 125px;

            /*border: 1px solid red;*/

        }

        #ul_img li img{

            100%;

            height: 100%;

        }

    </style>

     

    2.   HTML 代码

    <div id="div1">

        <ul id="ul_img">

            <li><img src="../../../../Images/301.jpg" alt=""/></li>

            <li><img src="../../../../Images/201.jpg" alt=""/></li>

            <li><img src="../../../../Images/302.gif" alt=""/></li>

            <li><img src="../../../../Images/202.jpg" alt=""/></li>

            <li><img src="../../../../Images/203.jpg" alt=""/></li>

        </ul>

    </div>

     

    3.   JS 代码

    var millisec = 10;    //滚动间隔时间(毫秒)

    var intervalId;

    var left = 0;

    var ul;

    window.onload = function(){

        ul = document.getElementById("ul_img");

        ul.innerHTML += ul.innerHTML;   //复制一份相同的li

        var lis = ul.getElementsByTagName("li");

        ul.style.width = (lis[0].offsetWidth * lis.length) + "px";  //重新设置宽度

        intervalId = setInterval("scroll()", millisec);

     

        var div1 = document.getElementById("div1");

        div1.onmouseover = function(){

            clearInterval(intervalId);

        }

        div1.onmouseout = function(){

            intervalId = setInterval("scroll()", millisec);

        }

    }

     

    function scroll(){

        left -= 1;

        //定位小于等于总宽度的二分之一时,则left设置为0

        if(left <= -ul.offsetWidth / 2)

            left = 0;

        ul.style.left = left + "px";

    }

     

    4.   运行效果

    clip_image001[8]

     

    Ø  分析

    1.   总体来说还是比较简单,首先定义了一个 div,并在内部定义了 ul li 标签,用于存放图片。

    2.   再将 ul 标签绝对定位,li 标签左浮动,img 宽度与高度设置100%

    3.   js 运行时,首先复制一份所有的 li 标签,加入 ul 中(用于滚动时的下一份图片集合)。

    4.   js 中可以看到,当ul left 值小于 ul.offsetWidth 的二分之一时,就重新定位 ul 标签,这样就实现了循环滚动。

  • 相关阅读:
    八 sizeof枚举
    九 推算程序结果
    十 交换变量特殊写法
    十一 移位-加减优先级 define undef
    十二 部分易忽略的优先级优先级
    十三 C语言的#特殊用法
    十四 访问数组:指针形式,下标形式
    VS出现未加载wntdll.pdb的解决办法
    C++继承产生的问题
    opencv加载图片imread失败的原因
  • 原文地址:https://www.cnblogs.com/abeam/p/7881909.html
Copyright © 2011-2022 走看看