使用JavaScript脚本实现无间断的图片循环滚动效果,主要是通过JavaScript脚本创建的Marquee函数实现的。在Marquee函数中,变量speed的数值用来控制图片滚动的速度,同时在页面中应用层来实现图片的显示与隐藏。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<style type = "text/css">
#demo {
background: #FFF;
overflow:hidden;
border: 1px dashed #CCC;
width: 580px;
height:200px;
}
#demo img {
border: 3px solid #F2F2F2;
}
#indemo {
float: left;
width: 800%;
}
#demo1 {
float: left;
}
#demo2 {
float: left;
}
</style>
</head>
<body>
<div id="demo">
<div id="indemo">
<div id="demo1">
<a href="#"><img src="banner.jpg" border="0" /></a>
<a href="#"><img src="banner.jpg" border="0" /></a>
</div>
<div id="demo2"></div>
</div>
</div>
<script language="javascript">
var speed=10; //数字越大数度越慢
var tab=document.getElementById("demo");
var tab1=document.getElementById("demo1");
var tab2=document.getElementById("demo2");
tab2.innerHTML=tab1.innerHTML; //克隆demo1为demo2
var MyMar;
function Marquee(){
if(tab2.offsetWidth-tab.scrollLeft<=0) //当滚动至demo1与demo2交界时
tab.scrollLeft-=tab1.offsetWidth
else{
tab.scrollLeft++;
}
MyMar=setInterval(Marquee,speed);
}
tab.οnmοuseοver=function() {clearInterval(MyMar)}; //鼠标移上时清除定时器达到滚动停止的目的
tab.οnmοuseοut=function() {MyMar=setInterval(Marquee,speed)}; //鼠标移开时重设定时器
Marquee();
</script>
</body>
</html>
其中,各属性:
innerHTML: 设置或获取位于对象起始和结束标签内的 HTML;
scrollHeight:获取对象的滚动高度;
scrollLeft: 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离;
scrollTop: 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离;
scrollWidth: 获取对象的滚动宽度;
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度;
offsetLeft: 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置;
offsetTop: 获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置;
offsetWidth::获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度。