简单实现js轮播图效果
发布时间 - 2026-01-11 02:21:12 点击率:次本文实例为大家分享了js实现轮播图效果展示的具体代码,供大家参考,具体内容如下

html结构
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
font-size:14px;
-webkit-user-select:none;
}
ul,li{
list-style:none;
}
img{
display:block;
border:none;
}
a{
display:block;
color:#000;
text-decoration: none;
}
a:hover,a:active,a:visited,a:target{
display:block;
color:#000;
text-decoration: none;
}
.banner{
position:relative;
margin:0 auto;
width:1000px;
height:300px;
overflow:hidden;
}
.banner .inner{
position:absolute;
top:0;
left:0;
height:300px;
width:1000px;/*在JS数据绑定结束后根据请求数据的多少来动态调整宽度*/
}
.banner .inner div{
float:left;
width:1000px;
height:300px;
background:url('img/default.gif') no-repeat center center #e1e1e1;
}
.banner .inner img{
display:none;
width:100%;
height:100%;
opacity:0;
filter:alpha(opacity=0);
}
.banner .bannerTip{
height:18px;
position:absolute;
right:20px;
bottom:20px;
}
.banner .bannerTip li{
float:left;
margin-left:10px;
width:18px;
height:18px;
border-radius:50%;
background:lightblue;
cursor:pointer;
}
.banner .bannerTip li.bg{
background:red;
}
.banner a{
display:none;
position:absolute;
top:50%;
margin-top:-22.5px;
width:30px;
height:45px;
background-image:url("img/pre.png");
background-repeat:no-repeat;
opacity:0.5;
filter:alpha(opacity=50);
}
.banner a:hover{
opacity:1;
filter:alpha(opacity=100);
}
.banner a.bannerLeft{
left:20px;
background-position:0 0;
}
.banner a.bannerRight{
right:20px;
background-position:-45px 0;
}
</style>
</head>
<body>
<div class='banner' id='banner'>
<div class='inner'>
<div><img src="img/banner1.jpg" alt=""></div>
<div><img src="img/banner2.jpg" alt=""></div>
<div><img src="img/banner3.jpg" alt=""></div>
<div><img src="img/banner4.jpg" alt=""></div>
</div>
<ul class='bannerTip'>
<li class='bg'></li>
<li></li>
<li></li>
<li></li>
</ul>
<a href="javascript:;" class='bannerLeft'></a>
<a href="javascript:;" class='bannerRight'></a>
</div>
</body>
</html>
js
(function(){
var banner = document.getElementById('banner');
var bannerInner = utils.firstChild(banner);
var bannerTip = utils.children(banner,'ul')[0];
var imgList = bannerInner.getElementsByTagName('img');
var oLis = bannerTip.getElementsByTagName('li');
var bannerLeft = utils.children(banner,'a')[0];
var bannerRight = utils.children(banner,'a')[1];
//实现数据绑定:Ajax请求数据、按照字符串拼接的方式绑定数据
var jsonData = null,count = null
~function(){
var xhr = new XMLHttlRequest;
xhr.open('get',"json/banner.txt?_="+Math.random(),false);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)){
jsonData = utils.formatJSON(xhr.responseText);
}
}
xhr.send(null);
}()
~function(){
//绑定轮播图区域的数据
var str = "";
if(jsonData){
for(var i = 0,len = jsonData.length;i<len;i++){
str+='<div><img src="" trueImg="'+jsonData[i]['img']+'"></div>'
}
//为了实现无缝滚动,需要把第一张克隆一份放在末尾
str+= '<div><img src="" trueImg="'+jsonData[0]['img']+'"></div>'
}
bannerInner.innerHTML = str;
count = jsonData.length+1;
utils.css(bannerInner,"width",count*1000);
//绑定焦点区域的数据
str = '';
if(jsonData){
for(var i = 0,len = jsonData.length;i<len;i++){
i===0?str+='<li class="bg"></li>':str+='<li></li>';
}
}
bannerTip.innerHTML = str;
}()
//图片延迟加载
function lazyImg(){
for(var i = 0,len = imgList.length;i<len;i++){
~function(i){//这里使用闭包,来避免onload事件异步导致的只有最后一张图片延迟加载的问题
var curImg = imgList[i];
var oImg = new Image;
oImg.src = curImg.getAttribute('trueImg');
oImg.onload = function(){
curImg.src = this.src;
curImg.style.display = "block";
oImg = null;
myAnimate(curImg,{opacity:1},300)
}
}(i)
}
}
window.setTimeout(lazyImg,500);
var step = 0;//记录的是步长,(当前是哪一张图片,0是第一张图片)
//实现自动轮播
var autoTimer = window.setInterval(autoMove,2000);
function autoMove(){
if(step===count-1){
step =0;
bannerInner.style.left = 0
}
step++;
myAnimate(bannerInner,{left:-step*1000},500)
changeTip();
}
//实现焦点对齐
function changeTip(){
var tempStep = step > oLis.length-1 ? 0 : step;
for(var i = 0,len = oLis.length;i<len;i++){
var curLi = oLis[i];
i === tempStep ? utils.addClass(curLi,"bg") : utils.removeClass(curLi,"bg")
}
}
//鼠标滑过停止和开启轮播
banner.onmouseover = function(){
window.clearInterval(autoTimer);
bannerLeft.style.display = bannerRight.style.display = 'block';
}
banner.onmouseout = function(){
autoTimer = window.setInterval(autoTimer,2000);
bannerLeft.style.display = bannerRight.style.display = 'none';
}
//点击焦点实现轮播图的切换
~function(){
for(var i = 0,len = oLis.length;i<len;i++){
var curLi = oLis[i];
curLi.index = i;
curLi.onclick = function(){
step = this.index;
changeTip();
myAnimate(bannerInner,{left:-step*1000},500)
}
}
}()
//实现左右切换
bannerRight.onclick = autoMove();
bannerLeft.onclick = function(){
if(step<=0){
step = count-1;
utils.css(bannerInner,"left",-step*1000);
}
step--;
autoMove();
}
})()
绑定的数据
[
{"img":"img/banner1.jpg","desc":"第一张轮播图"},
{"img":"img/banner2.jpg","desc":"第二张轮播图"},
{"img":"img/banner3.jpg","desc":"第三张轮播图"},
{"img":"img/banner4.jpg","desc":"第四张轮播图"}
]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 轮播图
# js实现支持手机滑动切换的轮播图片效果实例
# js实现点击左右按钮轮播图片效果实例
# zepto中使用swipe.js制作轮播图附swipeUp
# swipeDown不起效果问题
# JS实现左右无缝轮播图代码
# 原生js实现移动开发轮播图、相册滑动特效
# 简单的JS轮播图代码
# js 基础篇必看(点击事件轮播图的简单实现)
# 利用AngularJs实现京东首页轮播图效果
# 原生js实现无限循环轮播图效果
# 原生js实现轮播图的示例代码
# 绑定
# 第一张
# 的是
# 加载
# 放在
# 鼠标
# 大家分享
# 具体内容
# 大家多多
# 滑过
# 四张
# 第三张
# 图区
# 结束后
# hidden
# absolute
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
详解Android——蓝牙技术 带你实现终端间数据传输
中山网站推广排名,中山信息港登录入口?
韩国服务器如何优化跨境访问实现高效连接?
简单实现Android验证码
如何为不同团队 ID 动态生成多个非值班状态按钮
如何用已有域名快速搭建网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
java中使用zxing批量生成二维码立牌
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
b2c电商网站制作流程,b2c水平综合的电商平台?
详解jQuery中的事件
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何使用查询构建器?(Query Builder高级用法)
node.js报错:Cannot find module 'ejs'的解决办法
PHP正则匹配日期和时间(时间戳转换)的实例代码
香港服务器租用每月最低只需15元?
在Oracle关闭情况下如何修改spfile的参数
Android利用动画实现背景逐渐变暗
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
七夕网站制作视频,七夕大促活动怎么报名?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel如何使用Vite进行前端资源打包?(配置示例)
再谈Python中的字符串与字符编码(推荐)
JS中对数组元素进行增删改移的方法总结
Laravel怎么连接多个数据库_Laravel多数据库连接配置
米侠浏览器网页背景异常怎么办 米侠显示修复
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
java ZXing生成二维码及条码实例分享
如何快速搭建二级域名独立网站?
奇安信“盘古石”团队突破 iOS 26.1 提权
如何选择可靠的免备案建站服务器?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
高端企业智能建站程序:SEO优化与响应式模板定制开发

