全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单实现js轮播图效果

本文实例为大家分享了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 


相关文章: 香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  建站主机选购指南:核心配置与性价比推荐解析  宝塔建站教程:一键部署配置流程与SEO优化实战指南  ,如何利用word制作宣传手册?  如何零基础开发自助建站系统?完整教程解析  C#如何使用XPathNavigator高效查询XML  如何通过免费商城建站系统源码自定义网站主题与功能?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  建站之星安装后界面空白如何解决?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星如何实现网站加密操作?  建站主机是否属于云主机类型?  c++ stringstream用法详解_c++字符串与数字转换利器  *服务器网站为何频现安全漏洞?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在阿里云部署织梦网站?  如何做网站制作流程,*游戏网站怎么搭建?  建站之星如何配置系统实现高效建站?  家庭服务器如何搭建个人网站?  微信小程序 input输入框控件详解及实例(多种示例)  深圳网站制作案例,网页的相关名词有哪些?  如何通过西部数码建站助手快速创建专业网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  高端云建站费用究竟需要多少预算?  内网网站制作软件,内网的网站如何发布到外网?  建站之星如何优化SEO以实现高效排名?  b2c电商网站制作流程,b2c水平综合的电商平台?  深圳网站制作平台,深圳市做网站好的公司有哪些?  贸易公司网站制作流程,出口贸易网站设计怎么做?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  PHP正则匹配日期和时间(时间戳转换)的实例代码  宝塔建站无法访问?如何排查配置与端口问题?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站制作网站,深圳做网站哪家比较好?  网站代码制作软件有哪些,如何生成自己网站的代码?  七夕网站制作视频,七夕大促活动怎么报名?  如何选择高效稳定的ISP建站解决方案?  海南网站制作公司有哪些,海口网是哪家的?  C#如何序列化对象为XML XmlSerializer用法  如何快速使用云服务器搭建个人网站?  建站主机无法访问?如何排查域名与服务器问题  成都网站制作公司哪家好,四川省职工服务网是做什么用?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  深入理解Android中的xmlns:tools属性  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。