给html页面图片制造滚动效果
html部分源码
设置4个图片div
<body>
<div class="nivoSlider" style="height: 200px;width: 780px; οnmοuseοver="stop()" οnmοuseοut="start()">
<div class="slide">
<img src="./static/xinjiang/banner.jpg" s>
</div>
<div class="slide">
<img src="./static/xinjiang/carousel1.jpeg" s>
</div>
<div class="slide">
<img src="./static/xinjiang/carousel2.jpeg" s>
</div>
<div class="slide">
<img src="./static/xinjiang/carousel3.jpeg" s>
</div>
</div>
</body>
css部分源码
记得将高度和宽度调好
.nivoSlider { /*轮换图片的大小*/
position: relative;
width: 780px;
height: 200px;
overflow: hidden;
margin: 0 auto;
}
.nivoSlider .slide{
width: 780px;
height: 200px;
position: absolute;
}
javascript部分源码
<!-- 为整个页面添加onload加载完成事件,当浏览器打开并加载完并自动执行事件中的代码块 -->
<!-- 当页面加载完全,四个div(图片)应该并列在一起。 -->
<script type="text/javascript">
onload = function () {
var arr = document.getElementsByClassName("slide");
for (var i = 0; i < arr.length; i++) {
arr[i].style.left = i * 780 + "px";
}
}
function LeftMove() {
var arr = document.getElementsByClassName("slide");//获取三个子div
console.log('进来了');
for (var i = 0; i < arr.length; i++) {
var left = parseFloat(arr[i].style.left);
left -= 2; //让图片左移2个px
console.log("left减后:%s", left);
var width = 780;//图片的宽度
if (left <= -width) {
left = (arr.length - 1) * width;//当图片完全走出显示框,拼接到末尾,因为拼接起来总长度就是(arr.length) * width 但还有一张在显示,所以就减一
clearInterval(moveId); //然后停止循环
}
arr[i].style.left = left + "px";
}
}
moveId = setInterval(LeftMove, 10);//设置一个10毫秒定时器,并给自己取名, 此时已经能移动
function divInterval() {
moveId = setInterval(LeftMove, 10);//设置一个10毫秒定时器
}
timeId = setInterval(divInterval, 5000);//设置一个5秒的定时器。也就是5秒重启一次图片的轮换.要算好之前滑动消耗的时间.
function stop() {
clearInterval(timeId);//鼠标停留关闭B定时器
clearInterval(moveId);
}
function start() {
moveId = setInterval(LeftMove, 10);//设置一个10毫秒定时器
clearInterval(timeId);//重新打开一个定时前,先关闭之前定时器。
timeId = setInterval(divInterval, 5000);//重启一个定时器
}
// 当浏览器窗口切出或页面切换到其他页面一段时间再回来时,
// 轮播效果会有短暂加速(随切出时间加长而加长)。
// 主要是因为虽然窗口切出去了,定时器依然在执行,但页面却没有将效果显示,
// 所以切回来后会将之前的效果显示出来而加速轮播图。所以添加页面焦点事件:
//页面失去焦点定时器停止
onblur = function () {
stop();
}
//页面获取焦点时重启定时器
onfocus = function () {
start();
}
</script>
</script>