html 方向控制,js实现无缝滚动图(可控制当前滚动的方向)

本文介绍了使用JavaScript实现广告轮播效果的方法,包括控制左右滚动、鼠标点击展示广告以及记录滚动方向等功能。当鼠标悬停时,显示左右控制按钮,离开时自动继续滚动。点击广告可实现平滑滚动到相应位置。提供了详细的代码实现。
摘要由CSDN通过智能技术生成

这个版本可以控制左右滚动,鼠标点击对应的广告会自动滑动把广告完全展示出来。还实现了记录当前滚动的方向,当鼠标离开,接着继续滚动!!!

效果图:

代码如下:

*{margin: 0; padding: 0;}

li { list-style: none; }

.box {

width: 800px;

height: 450px;

margin: 50px auto;

overflow: hidden;

position: relative;

}

.box span {

width: 40px;

height: 60px;

display: block;

position: absolute;

top: 225px;

margin-top: -20px;

cursor: pointer;

z-index: 1;

}

.box #left {

background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042311cbd7gbjd7sggkd2b.png') no-repeat;

left: 0;

display: none;

}

.box #right {

background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042241w8z4hx4m4pjhyjzs.png') no-repeat;

right: 0;

display: none;

}

#ad {

width: 4000px;

height: 450px;

position: absolute;

}

#ad li {

float: left;

}

window.onload = function(){

var ad = document.getElementById("ad");

var lef = document.getElementById("left");

var rig = document.getElementById("right");

var timer = null; //管理定时器

var aspect = true;

function animate(obj,speed){

//关闭上一个定时器

clearInterval(obj.timer);

//管理定时器

obj.timer = setInterval(autoAd,30);

function autoAd(){

//判断左走或者右走

if(speed > 0){

aspect = true;

if(obj.offsetLeft >= 0){

obj.style.left = -3200 + 'px';

}

}else {

aspect = false;

if(obj.offsetLeft <= -3200){

obj.style.left = 0;

}

}

//匀速动画: 盒子当前的位置 + 步长

obj.style.left = obj.offsetLeft + speed +"px";

}

}

animate(ad,-5);

//鼠标划入显示控制按钮并关闭

ad.parentNode.onmouseover = function(){

clearInterval(ad.timer);

lef.style.display = "block";

rig.style.display = "block";

};

//鼠标离开隐藏控制按钮并启动定时器

ad.parentNode.onmouseout = function(){

clearInterval(ad.timer);

clearInterval(timer);

lef.style.display = "none";

rig.style.display = "none";

if(aspect){

animate(ad,5);

}else{

animate(ad,-5);

}

};

ad.onclick = function(event){

//关闭自动轮播定时器

clearInterval(ad.timer);

clearInterval(timer);

var event = event || window.event;

if(event.target){

var target = - parseInt(event.target.alt) * 800;

}else{

var target = - parseInt(event.srcElement.alt) * 800;

}

timer = setInterval(function(){

var step = (target - ad.offsetLeft) / 10;

step = step > 0 ? Math.ceil(step):Math.floor(step);

ad.style.left = ad.offsetLeft + step + "px";

if(ad.offsetLeft%800 == 0){

clearInterval(timer);

}

},20)

}

//右移动

lef.onclick = function(){

clearInterval(timer);

animate(ad,5);

};

//左移动

rig.onclick = function(){

clearInterval(timer);

animate(ad,-5);

};

}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持! ad51e517755f8fd6a7ec83ced4ecfaf3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值