javascript实现图片无缝滚动-------Day 27

今天感冒变严重了,鼻涕止不住啊,一卷卫生纸就这样报废了,还是不想吃药,熬熬总能熬过去吧,状态不是很好,看这么个小应用竟然看了很久的时间,到最后才像猛的明白了一样,而且查着好像有好几种做法的,今天先说说这种吧,比较好理解额。

所谓“图片无缝滚动”,我们可以这样来理解,如果只用marquee,则需要尾部也离开容器了,头部才能从头部另一端出现,重新进行滚动,如是进行循环,而无缝滚动,就是说一种首尾相连的效果,头部是咬在尾部上的,尾部全部漏出来后,后面紧挨着显示头部的部分,这样首尾相连进行的滚动就是图片无缝滚动。

理解了定义,来简单了解下实现的基本原理:

将一个序列中的所有li进行复制,添加到现有的li后面,则每次滚动到露出尾部的时候,后面紧跟着的则是复制部分的头部部分,那么我们要问了,当后面运行到尾部的时候呢,难道要再进行赋值,答案当然不是,换个思路想,当原来部分的尾部全部露出的时候,也就是现有的总部分的一半的时候,我们观察此时页面的状态是不是就跟初始状态一样了,是的,完全一样,那么我们就可以根据css的设置,将显示部分返回初始状态,这样进行周而复始,就形成了无缝滚动的效果了。

说了那么多,还是上代码来的更明白:

1、写html部分

<span style="font-size:12px;"><div id="test">
		<ul>
			<li><a href="#"><img src="img/0.jpg" width="300px" height="300px"></a></li>
			<li><a href="#"><img src="img/13.gif" width="300px" height="300px"></a></li>
			<li><a href="#"><img src="img/13.gif" width="300px" height="300px"></a></li>
			<li><a href="#"><img src="img/0.jpg" width="300px" height="300px"></a></li>
		</ul>
</div></span>

2、设置css样式,显示初始滚动前的样子

<span style="font-size:12px;"><style type="text/css">
*{margin: 0;padding: 0;}
#test{position: relative;margin: 200px auto;padding: 0 30px 0 10px;width: 900px;height: 300px;background-color: cyan;overflow: hidden;}
#test ul{position: absolute; list-style: none; margin: 10px 0 0 0; height: 160px;}
#test ul li{float: left;list-style: none;margin: 0;height: 300px;}
</style></span>

这里有两个是非常重要的:1、ul的position必须是absolute的;2、容器,也就是div,的overflow:hidden,隐藏溢出部分;

3、用javascript实现滚动

<span style="font-size:12px;"><script type="text/javascript">
window.onload=function(){
	var a=document.getElementById("test").getElementsByTagName("ul")[0];
	var b=document.getElementById("test").getElementsByTagName("li");
	a.innerHTML += a.innerHTML;//这个地方实现复制
	a.style.width = (b[0].offsetWidth+10) * b.length  + "px";//复制后ul的宽度加倍
	var speed = -1;
	var timer;
	//这里定义一个滚动方法
	var scroll = function(){
		timer = setInterval(function () {
			a.style.left =a.offsetLeft+speed+ "px";
			if (a.offsetLeft <= -a.offsetWidth/2) {
				a.style.left = 0;
			} else if (a.offsetLeft >= 0) {
				a.style.left = -a.offsetWidth/2 + "px";
			}
		}, 30);
	};
	scroll();//运行滚动的方法
};
</script></span>

定义方法之后,一定要运行才有效,所以scroll()一定不要漏掉;另外,看到这里style.left的设置,知道ul为什么一定要用absolute了吧;定时器还是很好用啊,给力。

其实这个小应用中最大的收获有两个:1、容器,溢出隐藏;2、复制用以滚动,这两个比较新颖啊

不行了,实在困了,感冒要人命啊,睡觉去....

javascript实现图片无缝滚动-------Day 27,布布扣,bubuko.com

时间: 2024-12-22 13:18:49

javascript实现图片无缝滚动-------Day 27的相关文章

javascript实现图片无缝滚动(scrollLeft的使用方法介绍)

<!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style> .piczhanshi{width:976px;height:167px;border:1px #999999 solid;

JavaScript学习笔记5 之 计时器 &amp; scroll、offset、client系列属性 &amp; 图片无缝滚动

一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行一次相应的函数(不重复) 清除计时器: clearInterval( ); clearTimeout( ); 当计时器调用执行完毕时,它将返回一个timer ID, 如果将该ID传递给clearInterval,便可以终止代码的执行. 实例: 页面布局: <div id="wrap"

jquery图片无缝滚动特效

jquery图片无缝滚动插件制作左右无缝滚动图片和上下无缝滚动图片,一款简单的jQuery无缝滚动代码.JS代码 <script type="text/javascript"> //图片滚动 调用方法 imgscroll({speed: 30,amount: 1,dir: "up"}); $.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir:

jquery图片无缝滚动代码左右 上下无缝滚动图片

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

第41天:匀速、缓动运动和图片无缝滚动

一.匀速运动和缓动运动 缓动运动公式:leader=leader+(target-leader)/10;//leader为初始值0,target为结束值,10可以改变,值越大,速度越慢 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>运动</title> 6 <style>

原生javascript效果:无缝滚动

<style type="text/css"> #con {width:400px; padding:10px; margin:20px auto; text-align:center; border:1px solid #ccc;} #con .roll {width:400px; height:100px; position:relative; overflow:hidden; margin-bottom:10px;} #con ul {position:absolut

js多组图片无缝滚动

原文:js多组图片无缝滚动 源代码下载地址:http://www.zuidaima.com/share/1550463717608448.htm

Javascript图片无缝滚动

js无缝滚动效果几乎在任何网页上都能看到它的身影,有的可能是使用插件,其实使用原始的javascript比较简单. 主要的是使用js位置知识. 1.innerHTML:设置或获取元素的html标签 2.scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距 3.offsetWidth:设置或获取指定标签的宽度 4.setInterval():设置方法定时启动 5.clearInterval();清除定时器 效果图: 先睹为快:demo <!DOCTYPE html>

JavaScript----marquee滚动标签 图片无缝滚动 插入百度地图

页面的自动滚动效果,可由javascript来实现, 但是有一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 使用marquee标记不仅可以移动文字,也可以移动图片,表格等. 语法:<marquee>...</marquee>: 说明:在标记之间添加要进行滚动的内容. 重要属性: 1.滚动方向direction(包括4个值:up. down. left和 right) 语法:<marquee direct