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 相关文章推荐
载入进度条 效果
Jul 08 Javascript
JS构建页面的DOM节点结构的实现代码
Dec 09 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
js编写选项卡效果
May 23 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
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分页集合包括使用方法
2013/10/21 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
python概率计算器实例分析
2015/03/25 Python
python异常和文件处理机制详解
2016/07/19 Python
浅谈Python NLP入门教程
2017/12/25 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
宝宝周岁宴答谢词
2014/01/26 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
数学国培研修感言
2014/02/13 职场文书
给校长的建议书范文
2015/09/14 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
拙作再改《我的收音机情缘》
2022/04/05 无线电
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers
Python OpenCV形态学运算示例详解
2022/04/07 Python