如何在静态页面中用JS制作页面滚动图片广告

 我来答
DoramiHe
2017-08-21 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59541
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
如果你用#2这些是会有延时的,如果没有的话,功能仿真是完全按照你的逻辑来的,不会有任何延时。根据我的经验,我猜测你会不会是错误的使用了阻塞赋值和非阻塞赋值呢? 常见于使用状态机的初始化情况。你可以打出图来帮你仔细看看。
黑马程序员
2017-09-07 · 改变中国IT教育,我们正在行动
黑马程序员
黑马程序员为大学毕业后,有理想、有梦想,想从事IT行业的年轻人改变自己的命运。黑马程序员成就IT黑马
向TA提问
展开全部

<!DOCTYPE html>

<html lang="en">


<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="common.js"></script>

<style type="text/css">

* {

padding: 0;

margin: 0;

list-style: none;

border: 0;

}

.all {

width: 500px;

height: 200px;

cursor: pointer;

/*        padding: 7px;

border: 1px solid #ccc;

*/

margin: 100px auto;

position: relative;

}

.screen {

width: 500px;

height: 200px;

overflow: hidden;

position: relative;

}

.screen li {

width: 500px;

height: 200px;

overflow: hidden;

float: left;

}

.screen ul {

position: absolute;

left: 0;

top: 0px;

width: 3000px;

}

.all ol {

position: absolute;

right: 10px;

bottom: 10px;

line-height: 20px;

text-align: center;

}

.all ol li {

float: left;

width: 20px;

height: 20px;

background: #fff;

border: 1px solid #ccc;

margin-left: 10px;

cursor: pointer;

}

.all ol li.current {

background: yellow;

}

#arr {

display: none;

}

#arr span {

width: 40px;

height: 40px;

position: absolute;

left: 5px;

top: 50%;

margin-top: -20px;

background: #000;

cursor: pointer;

line-height: 40px;

text-align: center;

font-weight: bold;

font-family: '黑体';

font-size: 30px;

color: #fff;

opacity: 0.3;

border: 1px solid #fff;

}

#arr #right {

right: 5px;

left: auto;

}

</style>

</head>

<body>

<div class="all" id="box">

<div class="screen">

<ul>

<li><img src="images/1.jpg" width="500" height="200" /></li>

<li><img src="images/2.jpg" width="500" height="200" /></li>

<li><img src="images/3.jpg" width="500" height="200" /></li>

<li><img src="images/4.jpg" width="500" height="200" /></li>

<li><img src="images/5.jpg" width="500" height="200" /></li>

</ul>

<ol></ol>

<div id="arr"><span id="left">&lt;</span><span id="right">&gt;</span></div>

</div>

</div>

<script type="text/javascript">

var box = getId("box");

var screen = box.children[0];

var ul = screen.children[0];

var ol = screen.children[1];

var ulLis = ul.children;

var imgWidth = screen.offsetWidth;

var arr = getId("arr");

var arrLeft = getId("left");

var arrRight = getId("right");

var timer = null;

// 动态生成结构,根据图片的数量生成按钮

for (var i = 0; i < ulLis.length; i++) {

var li = document.createElement("li");

li.innerHTML = i + 1;

ol.appendChild(li);

}

var olLis = ol.children;

olLis[0].className = "current";


var firstImg = ulLis[0].cloneNode(true);

ul.appendChild(firstImg);


// 排他

for (var i = 0; i < olLis.length; i++) {

olLis[i].index = i;

olLis[i].onmouseover = function() {

for (var j = 0; j < olLis.length; j++) {

olLis[j].className = "";

}

this.className = "current";

// 根据索引号 通过动画函数移动ul

var target = -this.index * imgWidth;

animate(ul, target);

pic = this.index;

square = this.index;

};

}


// 鼠标经过盒子显示箭头,离开隐藏

box.onmouseover = function() {

arr.style.display = "block";

clearInterval(timer);

};

box.onmouseout = function() {

arr.style.display = "none";

timer = setInterval(arrRight.onclick, 2000);

};

var pic = 0;

var square = 0;

arrRight.onclick = function() {

if (pic === ulLis.length - 1) {

ul.style.left = 0 + "px";

pic = 0;

}

pic++;

var target = -pic * imgWidth;

animate(ul, target);

if (square < olLis.length - 1) {

square++;

} else {

square = 0;

}

for (var i = 0; i < olLis.length; i++) {

olLis[i].className = "";

}

olLis[square].className = "current";

};

arrLeft.onclick = function() {

if (pic === 0) {

ul.style.left = -(ulLis.length - 1) * imgWidth + "px";

pic = ulLis.length - 1;

}

pic--;

var target = -pic * imgWidth;

animate(ul, target);

if (square > 0) {

square--;

} else {

square = olLis.length - 1;

}

for (var i = 0; i < olLis.length; i++) {

olLis[i].className = "";

}

olLis[square].className = "current";

};

timer = setInterval(arrRight.onclick, 2000);

</script>

</body>

</html>

2.需要添加一个JS。

3.这个最重要的一段代码如下:

function animate(obj, target) {
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var leader = obj.offsetLeft;
var step = 30;
step = leader < target ? step : -step;
if (Math.abs(leader - target) > Math.abs(step)) {
leader = leader + step;
obj.style.left = leader + "px";
} else {
obj.style.left = target + "px";
clearInterval(obj.timer);
}
}, 15);
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式