Javascript 实现图片无缝滚动
作者:bea
效果 : 鼠标移入图片 停止滚动, 鼠标移出自动滚动 可以调整向左或右方向滚动 代码如下: <style type="text/css"> * { margin: 0; padding: 0; } #div1 { overflow: hidden; width: 712px; height: 108px; margin: 100px auto; position: relative; background: red
效果 : 鼠标移入图片 停止滚动, 鼠标移出自动滚动
可以调整向左或右方向滚动
代码如下:
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#div1 {
overflow: hidden;
width: 712px;
height: 108px;
margin: 100px auto;
position: relative;
background: red;
}
#div1 ul {
position: absolute;
left: 0;
top: 0;
}
#div1 ul li {
float: left;
width: 178px;
height: 108px;
list-style: none;
}
</style>
代码如下:
<body>
<a href="javascript:;">向左走</a>
<a href="javascript:;">向右走</a>
<div id="div1">
<ul>
<li>
<img src="img/无缝滚动/1.jpg" />
</li>
<li>
<img src="img/无缝滚动/2.jpg" />
</li>
<li>
<img src="img/无缝滚动/3.jpg" />
</li>
<li>
<img src="img/无缝滚动/4.jpg" />
</li>
</ul>
</div>
</body>
以上是一个简单的布局,下面是主要的Javascript 代码
代码如下:
<script type="text/javascript">
window.onload = function() {
var oDiv = document.getElementById("div1");
var oUl = oDiv.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
var speed = 2;
oUl.innerHTML += oUl.innerHTML;
oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
function move() {
if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
oUl.style.left = '0';
}
if (oUl.offsetLeft > 0) {
oUl.style.left = -oUl.offsetWidth / 2 + 'px';
}
oUl.style.left = oUl.offsetLeft + speed + 'px';
}
var timer = setInterval(move, 30);
oDiv.onmouseover = function() {
clearInterval(timer);
};
oDiv.onmouseout = function() {
timer = setInterval(move, 30);
};
document.getElementsByTagName('a')[0].onclick = function() {
speed = -2;
};
document.getElementsByTagName('a')[1].onclick = function() {
speed = 2;
};
}
</script>
简单讲下思路:
首先设置ul 里面的图片一共有8张 oUl.innerHTML += oUl.innerHTML;
在 计算ul的宽度为 li的实际宽度*8
之后将 多余的内容隐藏
注意 : oUl.offsetLeft 肯定是负值
所以判断的时候不要把负号漏掉
代码如下:
if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
oUl.style.left = '0';
}
这段表示 图片滚动到一半了,迅速把图片拉回来,因为程序执行的太快,所以几乎看不出来 实现无缝滚动
最后使用 变量 speed 来控制左右方向的滚动。
以上代码只是实现了最基本的功能,小伙伴们可以在此基础上继续完善。
有用 | 无用
可以调整向左或右方向滚动
代码如下:
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#div1 {
overflow: hidden;
width: 712px;
height: 108px;
margin: 100px auto;
position: relative;
background: red;
}
#div1 ul {
position: absolute;
left: 0;
top: 0;
}
#div1 ul li {
float: left;
width: 178px;
height: 108px;
list-style: none;
}
</style>
代码如下:
<body>
<a href="javascript:;">向左走</a>
<a href="javascript:;">向右走</a>
<div id="div1">
<ul>
<li>
<img src="img/无缝滚动/1.jpg" />
</li>
<li>
<img src="img/无缝滚动/2.jpg" />
</li>
<li>
<img src="img/无缝滚动/3.jpg" />
</li>
<li>
<img src="img/无缝滚动/4.jpg" />
</li>
</ul>
</div>
</body>
以上是一个简单的布局,下面是主要的Javascript 代码
代码如下:
<script type="text/javascript">
window.onload = function() {
var oDiv = document.getElementById("div1");
var oUl = oDiv.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
var speed = 2;
oUl.innerHTML += oUl.innerHTML;
oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
function move() {
if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
oUl.style.left = '0';
}
if (oUl.offsetLeft > 0) {
oUl.style.left = -oUl.offsetWidth / 2 + 'px';
}
oUl.style.left = oUl.offsetLeft + speed + 'px';
}
var timer = setInterval(move, 30);
oDiv.onmouseover = function() {
clearInterval(timer);
};
oDiv.onmouseout = function() {
timer = setInterval(move, 30);
};
document.getElementsByTagName('a')[0].onclick = function() {
speed = -2;
};
document.getElementsByTagName('a')[1].onclick = function() {
speed = 2;
};
}
</script>
简单讲下思路:
首先设置ul 里面的图片一共有8张 oUl.innerHTML += oUl.innerHTML;
在 计算ul的宽度为 li的实际宽度*8
之后将 多余的内容隐藏
注意 : oUl.offsetLeft 肯定是负值
所以判断的时候不要把负号漏掉
代码如下:
if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
oUl.style.left = '0';
}
这段表示 图片滚动到一半了,迅速把图片拉回来,因为程序执行的太快,所以几乎看不出来 实现无缝滚动
最后使用 变量 speed 来控制左右方向的滚动。
以上代码只是实现了最基本的功能,小伙伴们可以在此基础上继续完善。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery的text()方法用法分析
- jQuery中click事件的定义和用法
- javascript中String对象的slice()方法分析
- javascript中Number对象的toString()方法分析
- javascript中parseInt()函数的定义和用法分析
- JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
- node.js解决获取图片真实文件类型的问题
- javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
- Node.js实现批量去除BOM文件头
- javascript删除一个html元素节点的方法
- Node.js中调用mysql存储过程示例
- nodejs中操作mysql数据库示例
- 零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
- jQuery多媒体插件jQuery Media Plugin使用详解
- jquery图片播放浏览插件prettyPhoto使用详解
- js中匿名函数的创建与调用方法分析
- 浅谈Javascript中匀速运动的停止条件
- 浅谈Javascript如何实现匀速运动
- Javascript添加监听与删除监听用法详解