使用原生的javascript来实现轮播图
发布时间 - 2026-01-10 23:15:17 点击率:次下面看下js轮播图的实现代码,具体代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
* {
padding: 0;
margin: 0;
list-style: none;
border: 0;
}
.all {
width: 500px;
height: 200px;
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>
<div id="arr"><span id="left"><</span><span id="right">></span></div>
</div>
<script>
function $(element) {
return document.getElementById(element);
}
var box = $("box");
var screen = box.children[0];
var ul = screen.children[0];
var ulLis = ul.children;
var ol = screen.children[1];
var arr = $("arr");
var left = $("left");
var right = $("right");
//动态创建小图标
for (var i = 0; i < ulLis.length; i++) {
var li = document.createElement("li");
li.innerHTML = i + 1;
ol.appendChild(li);
}
//设置这些个小图标
var olLis = ol.children;
var imgWidth = screen.offsetWidth;
for (var j = 0; j < olLis.length; j++) {
olLis[j].index = j;
olLis[j].onmouseover = function () {
//排他思想
for (var i = 0; i < olLis.length; i++) {
olLis[i].className = "";
}
this.className = "current";
var target = -imgWidth * this.index;
cutton(ul, target, 20);
//为了让点击事件和小面的小图标能够一一对应,设置他们的索引值相同
pic = square = this.index;
}
}
//给小图标设置一个初始样式
ol.children[0].className = "current";
//给ul追加一张图
ul.appendChild(ul.children[0].cloneNode(true));
//设置箭头的显示与隐藏
box.onmouseover = function () {
arr.style.display = "block";
//鼠标放上去的时候,不再自动滚动
clearInterval(timer);
}
box.onmouseout = function () {
arr.style.display = "none";
//鼠标离开的时候,继续自动滚动
timer = setInterval(playNext, 1000);
}
//设置点击左右小箭头的事件且要求小图标要跟着变化
//1.设置点击右侧箭头
var pic = 0;//记录当前为第几项用
var square = 0;//记录小图标的索引值
/* right.onclick = function () {//存在的问题是当移动到最后一张的时候,无法跳转到第一张
pic++;
var target = -pic * imgWidth;
cutton(ul, target, 20);
}*/
//方法改进
/*right.onclick = function () {
//先对pic做一个判断,当pic的值为5的时候,实现一个跳转
if (pic == ulLis.length - 1) {
ul.style.left = 0;
pic = 0;
}
pic++;
var target = -pic * imgWidth;
cutton(ul, target, 20);
if (square == olLis.length - 1) {
square = -1;//下面会加一,就变成了0
}
square++;
//排他思想
for (var i = 0; i < olLis.length; i++) {
olLis[i].className = "";
}
olLis[square].className = "current";
}*/
//使用封装函数
right.onclick = function () {
playNext();
}
//2.设置点击左侧箭头
left.onclick = function () {//要判断一下当pic为零时的情况
if (pic == 0) {
ul.style.left = -imgWidth * (ulLis.length - 1) + "px";//要记得加单位
pic = ulLis.length - 1;//给pic重新赋一个值
}
pic--;
var target = -pic * imgWidth;
cutton(ul, target, 20);
//设置小图标样式
if (square == 0) {
square = olLis.length;
}
square--;
for (var i = 0; i < olLis.length; i++) {
olLis[i].className = "";
}
olLis[square].className = "current";
}
//设置自动滚动
//1.封装点击右侧小箭头事件
function playNext() {
//先对pic做一个判断,当pic的值为5的时候,实现一个跳转
if (pic == ulLis.length - 1) {
ul.style.left = 0;
pic = 0;
}
pic++;
var target = -pic * imgWidth;
cutton(ul, target, 20);
if (square == olLis.length - 1) {
square = -1;//下面会加一,就变成了0
}
square++;
//排他思想
for (var i = 0; i < olLis.length; i++) {
olLis[i].className = "";
}
olLis[square].className = "current";
}
//2.调用这个封装的函数,并且设置一个间歇性计时器
var timer = null;
timer = setInterval(playNext, 1000);
//封装函数
function cutton(obj, target, stp) {
clearInterval(obj.timer);
obj.timer = setInterval(function () {
var step = stp;
step = obj.offsetLeft > target ? -step : step;
if (Math.abs(obj.offsetLeft - target) >= Math.abs(step)) {
obj.style.left = obj.offsetLeft + step + "px";
} else {
obj.style.left = target + "px";
clearInterval(obj.timer);
}
}, 15)
}
</script>
</body>
</html>
补充:原生javascript实现banner图自动轮播切换
一般在做banner轮播图的时候都是用jquery,因为代码少,方便,不需要花费很长的时间去获取某个元素作为变量,然后再进行操作,只要一个$就搞定了。但是今天我用原生的javascript做了一下这个轮播效果,感觉还行,以下是部分js源代码,仅供参考!文章底部查看效果演示。
1、鼠标离开banner图,每隔2s切换一次;
2、鼠标滑过下方的小按钮,可以切换图片;
3、鼠标点击左右按钮,可以切换图片。
var oPic,oLi,anniu,aLi,aLength,num,timer,oG,_index,oSpan;
window.onload = function(){
oPic = document.getElementsByClassName("pic")[0];
oLi = oPic.getElementsByTagName("li");
anniu = document.getElementsByClassName("anniu")[0];
aLi = anniu.getElementsByTagName("li");
aLength = aLi.length;
num = 0;
oG = document.getElementsByClassName("g")[0];
oSpan = oG.getElementsByTagName("span");
oLeft = oSpan[0];
oRight = oSpan[1];
start();
oG.onmouseover = end;
oG.onmouseout = start;
for(var j=0; j<aLength; j++){
aLi[j].index = j;
aLi[j].onmouseover = change;
}
oRight.onclick = time;
oLeft.onclick = times;
}
//自动轮播开始或结束
function start(){
timer = setInterval(time,2000);
hide();
}
function end(){
clearInterval(timer);
show();
}
//图片切换++
function time(){
for(var i=0; i<aLength; i++){
oLi[i].style.display = "none";
aLi[i].className = "";
}
num++;
num = num % 4;
oLi[num].style.display = "block";
aLi[num].className = "on";
}
//图片切换--
function times(){
for(var i=0; i<aLength; i++){
oLi[i].style.display = "none";
aLi[i].className = "";
}
num--;
num = (num+4)%4;
oLi[num].style.display = "block";
aLi[num].className = "on";
}
//鼠标滑过按钮,图片轮播
function change(){
_index = this.index;
for(var k=0; k<aLength; k++){
aLi[k].className = "";
oLi[k].style.display = "none";
}
aLi[_index].className = "on";
oLi[_index].style.display = "block";
}
//左右按钮显示或隐藏
function show(){
oSpan[0].style.display = "block";
oSpan[1].style.display = "block";
}
function hide(){
oSpan[0].style.display = "none";
oSpan[1].style.display = "none";
}
以上所述是小编给大家介绍的使用原生的javascript来实现轮播图,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# js
# 轮播图
# 利用AngularJs实现京东首页轮播图效果
# js 基础篇必看(点击事件轮播图的简单实现)
# 完美实现八种js焦点轮播图(下篇)
# JS实现左右无缝轮播图代码
# zepto中使用swipe.js制作轮播图附swipeUp
# swipeDown不起效果问题
# js实现支持手机滑动切换的轮播图片效果实例
# 鼠标
# 小图标
# 做一个
# 跳转
# 小编
# 值为
# 滑过
# 都是
# 变成了
# 他们的
# 在此
# 零时
# 小箭头
# 计时器
# 我用
# 给大家
# 问题是
# 然后再
# 很长
# 所示
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信小程序 scroll-view组件实现列表页实例代码
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
EditPlus中的正则表达式实战(5)
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何使用Collections进行数据处理?(实用方法示例)
佛山企业网站制作公司有哪些,沟通100网上服务官网?
香港网站服务器数量如何影响SEO优化效果?
深圳网站制作培训,深圳哪些招聘网站比较好?
iOS正则表达式验证手机号、邮箱、身份证号等
如何快速搭建高效简练网站?
免费视频制作网站,更新又快又好的免费电影网站?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
西安专业网站制作公司有哪些,陕西省建行官方网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
高端建站三要素:定制模板、企业官网与响应式设计优化
高防服务器租用如何选择配置与防御等级?
微信小程序 require机制详解及实例代码
无锡营销型网站制作公司,无锡网选车牌流程?
如何在香港服务器上快速搭建免备案网站?
如何快速启动建站代理加盟业务?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
中山网站制作网页,中山新生登记系统登记流程?
轻松掌握MySQL函数中的last_insert_id()
网页设计与网站制作内容,怎样注册网站?
深圳网站制作平台,深圳市做网站好的公司有哪些?
制作企业网站建设方案,怎样建设一个公司网站?
网站制作报价单模板图片,小松挖机官方网站报价?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
如何用wdcp快速搭建高效网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何在服务器上三步完成建站并提升流量?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Swift开发中switch语句值绑定模式
Android滚轮选择时间控件使用详解
实现点击下箭头变上箭头来回切换的两种方法【推荐】
js实现点击每个li节点,都弹出其文本值及修改
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Android自定义listview布局实现上拉加载下拉刷新功能
Android GridView 滑动条设置一直显示状态(推荐)
如何在景安云服务器上绑定域名并配置虚拟主机?
如何快速搭建高效可靠的建站解决方案?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
python中快速进行多个字符替换的方法小结
开心动漫网站制作软件下载,十分开心动画为何停播?

