JS实现图片的不间断连续滚动的简单实例


Posted in Javascript onJune 03, 2016

js替代marquee实现图片无缝滚动

可能大家都碰到过,当marquee中滚动的是图片的时候,滚到终点的时候直接就跳回到起点了,而不像文字那样可以无缝滚动,下面介绍的是通过js来实现图片的无缝滚动。

先了解一下下面这几个属性:

innerHTML: 设置或获取位于对象起始和结束标签内的 HTML

scrollHeight: 获取对象的滚动高度。

scrollLeft: 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离

scrollTop: 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离

scrollWidth: 获取对象的滚动宽度

offsetHeight: 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度

offsetLeft: 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置

offsetTop: 获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

offsetWidth: 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度

-----------------------------------------------------------------------

图片向上无缝滚动

<style type="text/css">
<!--
#demo {
background: #FFF;
overflow:hidden;
border: 1px dashed #CCC;
height: 100px;
text-align: center;
float: left;
}
#demo img {
border: 3px solid #F2F2F2;
display: block;
}
-->
</style>
向上滚动
<div id="demo">
<div id="demo1">
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
</div>
<div id="demo2"></div>
</div>

<script>
<!--
var speed=10; //数字越大速度越慢
var tab=document.getElementByIdx_x("demo");
var tab1=document.getElementByIdx_x("demo1");
var tab2=document.getElementByIdx_x("demo2");
tab2.innerHTML=tab1.innerHTML; //克隆demo1为demo2
function Marquee(){
if(tab2.offsetTop-tab.scrollTop<=0)//当滚动至demo1与demo2交界时
tab.scrollTop-=tab1.offsetHeight //demo跳到最顶端
else{
tab.scrollTop++
}
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};//鼠标移上时清除定时器达到滚动停止的目的
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠标移开时重设定时器
-->
</script>

图片向下无缝滚动

<style type="text/css">
<!--
#demo {
background: #FFF;
overflow:hidden;
border: 1px dashed #CCC;
height: 100px;
text-align: center;
float: left;
}
#demo img {
border: 3px solid #F2F2F2;
display: block;
}
-->
</style>
向下滚动
<div id="demo">
<div id="demo1">
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
</div>
<div id="demo2"></div>
</div>

<script>
<!--
var speed=10; //数字越大速度越慢
var tab=document.getElementByIdx_x("demo");
var tab1=document.getElementByIdx_x("demo1");
var tab2=document.getElementByIdx_x("demo2");
tab2.innerHTML=tab1.innerHTML; //克隆demo1为demo2
tab.scrollTop=tab.scrollHeight
function Marquee(){
if(tab1.offsetTop-tab.scrollTop>=0)//当滚动至demo1与demo2交界时
tab.scrollTop+=tab2.offsetHeight //demo跳到最顶端
else{
tab.scrollTop--
}
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};//鼠标移上时清除定时器达到滚动停止的目的
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};//鼠标移开时重设定时器
-->
</script>

图片向左无缝滚动

<style type="text/css">
<!--
#demo {
background: #FFF;
overflow:hidden;
border: 1px dashed #CCC;
width: 500px;
}
#demo img {
border: 3px solid #F2F2F2;
}
#indemo {
float: left;
width: 800%;
}
#demo1 {
float: left;
}
#demo2 {
float: left;
}
-->
</style>
向左滚动
<div id="demo">
<div id="indemo">
<div id="demo1">
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
</div>
<div id="demo2"></div>
</div>
</div>

<script>
<!--
var speed=10; //数字越大速度越慢
var tab=document.getElementByIdx_x("demo");
var tab1=document.getElementByIdx_x("demo1");
var tab2=document.getElementByIdx_x("demo2");
tab2.innerHTML=tab1.innerHTML;
function Marquee(){
if(tab2.offsetWidth-tab.scrollLeft<=0)
tab.scrollLeft-=tab1.offsetWidth
else{
tab.scrollLeft++;
}
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};
-->
</script>

图片向右无缝滚动

<style type="text/css">
<!--
#demo {
background: #FFF;
overflow:hidden;
border: 1px dashed #CCC;
width: 500px;
}
#demo img {
border: 3px solid #F2F2F2;
}
#indemo {
float: left;
width: 800%;
}
#demo1 {
float: left;
}
#demo2 {
float: left;
}
-->
</style>
向右滚动
<div id="demo">
<div id="indemo">
<div id="demo1">
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
</div>
<div id="demo2"></div>
</div>
</div>

<script>
<!--
var speed=10; //数字越大速度越慢
var tab=document.getElementByIdx_x("demo");
var tab1=document.getElementByIdx_x("demo1");
var tab2=document.getElementByIdx_x("demo2");
tab2.innerHTML=tab1.innerHTML;
function Marquee(){
if(tab.scrollLeft<=0)
tab.scrollLeft+=tab2.offsetWidth
else{
tab.scrollLeft--;
}
}
var MyMar=setInterval(Marquee,speed);
tab.onmouseover=function() {clearInterval(MyMar)};
tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};
-->
</script>

最后,如果有人想一个页面有两个滚动图片集,一个往左一个往右,那下面的能用了。我把js都加个i了,还有css

向右滚动

<div id="demoi">
<div id="indemoi">
<div id="demoi1">
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
<a href="#"><img src="https://3water.com/other/link/Clear_logo.gif" border="0" /></a>
</div>
<div id="demoi2"></div>
</div>
</div>

<script>
<!--
var speedi=10; //数字越大速度越慢
var tabi=document.getElementByIdx_x("demoi");
var tabi1=document.getElementByIdx_x("demoi1");
var tabi2=document.getElementByIdx_x("demoi2");
tabi2.innerHTML=tabi1.innerHTML;
function Marqueei(){
if(tabi.scrollLeft<=0)
tabi.scrollLeft+=tabi2.offsetWidth
else{
tabi.scrollLeft--;
}
}
var MyMari=setInterval(Marqueei,speedi);
tabi.onmouseover=function() {clearInterval(MyMari)};
tabi.onmouseout=function() {MyMari=setInterval(Marqueei,speedi)};
-->
</script>

以上这篇JS实现图片的不间断连续滚动的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 创建书签小工具之理论
Feb 25 Javascript
js实现拖拽 闭包函数详细介绍
Nov 25 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
jquery.map()方法的使用详解
Jul 09 Javascript
javascript控制图片播放的实现代码
Jul 29 Javascript
canvas实现图像截取功能
Feb 06 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
JavaScript评论点赞功能的实现方法
Mar 13 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 #Javascript
js不间断滚动的简单实现
Jun 03 #Javascript
Ionic如何创建APP项目
Jun 03 #Javascript
Ionic快速安装教程
Jun 03 #Javascript
Ionic如何实现下拉刷新与上拉加载功能
Jun 03 #Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 #Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 #Javascript
You might like
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php简单日历函数
2015/10/28 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
python获取图片颜色信息的方法
2015/03/18 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python单链表简单实现代码
2016/04/27 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
详解Python locals()的陷阱
2019/03/26 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
安全资料员岗位职责
2013/12/14 职场文书
期终自我鉴定
2014/02/17 职场文书
酒店开业策划方案
2014/06/02 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书