Ø  前言

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

1.   首先定义 css 样式

<style type="text/css">

*{

margin: 0px;

padding: 0px;

list-style: none;

}

#div1{

width: 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;

width: 125px;

height: 125px;

/*border: 1px solid red;*/

}

#ul_img li img{

width: 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.   运行效果

Ø  分析

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

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

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

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

使用 JS 实现图片左右跑马灯的更多相关文章

  1. 使用vue.js封装一个包含图片的跑马灯组件

    初衷: 学习完Vuejs后,来准备练习仿写一下老东家的门户页面,主要是为了熟悉一下常用插件的使用,比如video.js,wow.js,swiper等等:而其中涉及到一个包含图片跑马灯组件,大概长这样( ...

  2. 使用 JS 实现文字左右跑马灯

    Ø  前言 其实,前面两篇已经基本上实现了图片.文字跑马灯,这里为什么还要学下文字左右跑马灯呢?因为,虽然基本一样,但实现起来还是有很大不同的,所以为了完整再补充一下.代码如下: 1.   首先定义 ...

  3. 【HTML】 向网页<Title></Title>中插入图片以及跑马灯

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style typ ...

  4. 使用 JS 实现文字上下跑马灯

    Ø  前言 今天在做商城首页时,遇到一个上下跑马灯功能,因为之前也只是接触过左右的跑马灯,一时还不知道从何下手.在网上看了几个 demo,并亲自运行了一下,是可以实现的.但是,能运行不知其所以然也不行 ...

  5. JS写一个列表跑马灯效果--基于touchslide.js

    先放上效果图: 类似于这样的,在列表中循环添加背景样式的跑马灯效果. 准备引入JS插件: <script type="text/javascript" src="x ...

  6. jquery.marquee.js - 有点奇怪的跑马灯动画,不过还是加上去了

    客户想要一个跑马灯的效果,最终我用了jquery.marquee.js. 这个库很简单就能用. 效果是这样,从左到右,移动速度都不一样. 1. HTML <div class="mar ...

  7. PS跑马灯效果和更换图标

    最终效果     1.图片修改   跑马灯效果图 Head页面 使用的 IScript_HPDefaultHdr() in WEBLIB_PORTAL.PORTAL_HOMEPAGE 这个页面   一 ...

  8. 微信小程序里实现跑马灯效果

    在微信小程序 里实现跑马灯效果,类似滚动字幕或者滚动广告之类的,使用简单的CSS样式控制,没用到JS wxml: <!-- 复制的跑马灯效果 --> <view class=&quo ...

  9. javascript小记五则:用JS写一个图片左右自由滚动的“跑马灯”效果

    之前看了很多百度搜索出的东西,十个有九个是不能实用的,个个讲的都不详细,今天详细给大家讲解下关于这个图片“跑马灯”滚动效果,源码如下: <!DOCTYPE html PUBLIC "- ...

随机推荐

  1. docker_macvlan

    目录 macvlan macvlan macvlan的原理是在宿主机物理网卡上虚拟出多个子网卡,通过不同的MAC地址在数据链路层(Data Link Layer)进行网络数据转发的,它是比较新的网络虚 ...

  2. [SCOI2010]幸运数字(容斥+爆搜)

    在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是 ...

  3. CentOS单网卡绑定双IP

    OS:CnetOS 6.8 初始网卡配置文件 [root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ...

  4. Spring Boot 1.X和2.X优雅重启实战

    纯洁的微笑 今天 项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等待未完成的请求执行完成 ...

  5. Arch Linux下Visual Stdio Code在格式化C代码时报错

    libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...

  6. 【洛谷P4145】花神游历各国

    题目大意:给定一个长度为 N 的序列,支持区间开根,区间求和. 题解:对于区间开根操作,可以发现任何一个位置的值开根至多 6 次就会变成 1.因此即使是整个区间开根,暴力修改6次后,所有的点的权值均小 ...

  7. dispatchEvent(AWTEvent) 分派事件

    点一个按钮,显示的分派一个指定的事件给系统. 下面是一个例子,当点击close按钮时,分派一个new WindowEvent(this,WindowEvent.WINDOW_CLOSING)事件给系统 ...

  8. PHP冒泡排序算法

    算法说明: 冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数.由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序.但其实在实际过程中也可以根据 ...

  9. linux系统调用之网络管理2

    socketcall socket系统调用 socket 建立socket bind 绑定socket到端口 connect 连接远程主机 accept 响应socket连接请求 send 通过soc ...

  10. TestNg 10. 多线程测试-xml文件实现

    代码如下: package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiT ...