js学习总结_轮播图之渐隐渐现版(实例讲解)


Posted in Javascript onJuly 17, 2017

具体代码如下:

<!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
    }
    img{
      display: block;
      border:none;
    }
    .banner{
      position:relative;
      width:1000px;
      height:300px;
      margin:0 auto;
      overflow:hidden;
    }
    .banner .bannerInner{
      width:100%;
      height:100%;
      background:url("../img/default.gif") no-repeat center center #e1e1e1;
    }
    .banner .bannerInner div{
      position:absolute;
      width:100%;
      height:100%;
      top:0;
      left:0;
      z-index:0;
      opacity:0;
      filter:alpha(opacity=0);
    }
    .banner .bannerInner img{
      display:none;
      width:100%;
      height:100%s;
    }

    .banner .bannerTip{
      position:absolute;
      height:18px;
      overflow:hidden;
      right:20px;
      bottom:20px;
      z-index:10;
    }
    .banner .bannerTip li{
      float:left;
      margin-left:10px;
      width:18px;
      height:18px;
      background:lightblue;
      cursor:pointer;
      border-radius:50%;
    }
    .banner .bannerTip li.bg{
      background:red;
    }

    .banner a{
      display:none;
      position:absolute;
      top:50%;
      z-index:20;
      margin-top:-22.5px;
      width:30px;
      height:45px;
      background:url("../img/pre.png");
      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:-50px 0;
    }
  </style>
</head>
<body>
  <div class='banner' id='banner'>
    <div class='bannerInner'>
      <div><img src="" alt="" trueImg="img/banner1.jpg"></div>
      <div><img src="" alt="" trueImg="img/banner2.jpg"></div>
      <div><img src="" alt="" trueImg="img/banner3.jpg"></div>
      <div><img src="" alt="" trueImg="img/banner4.jpg"></div>
    </div>
    <ul class='bannerTip'>
      <li class='bg'></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <a href="javascript:;" rel="external nofollow" rel="external nofollow" class='bannerLeft'></a>
    <a href="javascript:;" rel="external nofollow" rel="external nofollow" class='bannerRight'></a>
  </div>

  <script>
    var banner = document.getElementById('banner');
    var bannerInner = utils.firstChild(banner),bannerTip = utils.children(banner,"ul")[0],bannerLink = utils.children(banner,'a'),bannerLeft = bannerLink[0],bannerRight = bannerLink[1];
    var divList = bannerInner.getElementsByTagName('div');
    var imgList = bannerInner.getElementsByTagName('img');
    var oLis = bannerTip.getElementsByTagName('li');
    //1、Ajax读取数据
    var jsonData = null;
    ~function(){
      var xhr = new XMLHttpRequest;
      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)
    }()
    //2、数据绑定
    ~function(){
      var str = "",str2 = "";
      if(jsonData){
        for(var i = 0,len=jsonData.length;i<len;i++){
          var curData = jsonData[i];
          str+='<div><img src="" alt="" trueImg="'+curData['img']+'"></div>';
          i===0?str2+="<li class='bg'></li>":str2+="<li></li>"
        }
      }
      bannerInner.innerHTMl = str;
      bannerTip.innerHTML = str2;
    }()

    //3、图片的延迟加载
    window.setTimeout(lazyImg,500)
    function lazyImg(){
      for(var i = 0,len = imgList.length;i<len;i++){
        ~function(i){
          var curImg = imgList[i];
          var oImg = new Image;
          oImg.src = curImg.getAttribute('trueImg');
          oImg.onload = function(){
            curImg.src = this.src;
            curImg.style.display = block;
            //只对第一张处理
            if(i===0){
              var curDiv = curImg.parentNode;
              curDiv.style.zIndex = 1;
              myAnimate(curDiv,{opacity:1},200);
            }
            oImg = null;
          }
        }(i)
      }
    }
    //4、自动轮播
    var interval = 3000,autoTimer = null,step = 0;
    autoTimer = window.setInterval(autoMove,interval);
    function autoMove(){
      //当已经把最后一张展示完成后(step等于最后一张的索引),我们应该展示第一张,我们让step = -1,这样再经过一次累加,step就变为0,来展示第一张
      if(step === jsonData.length-1){
        step = -1
      }
      step++;
      setBanner();
    }
    //实现轮播图切换效果的代码
    function setBanner(){
      //1、让step索引对应的那个DIV的zIndex的值为1,其他的zIndex为0 
      for(var i = 0,len = divList.length;i<len;i++){
        var curDiv = divList[i];
        if(i===step){
          utils.css(curDiv,"zIndex",1)
          //2、让当前的透明度从0变为1,当动画结束,我们需要让其他的div的透明度的值直接变为0
          myAnimate(curDiv,{opacity:1},200,function(){
            var curDivSib = utils.siblings(this);
            for(var k = 0,len = curDivSib.length;k<len;k++){
              utils.css(curDivSib[k],'opacity',0)
            }

          })
          continue
        }
        utils.css(curDiv,"zIndex",0)
      }
      //实现焦点对其
      for(i = 0,len = oLis.length;i<len;i++){
        var curLi = oLis[i];
        i === step?utils.addClass(curLi,"bg"):utils.removeClass(curLi,"bg");
      }

    }
    //5、实现鼠标悬停停止自动轮播和离开在开启自动轮播
    banner.onmouseover = function(){
      window.clearInterval(autoTimer);
      bannerLeft.style.display = bannerRight.style.display = "block"

    }
    banner.onmouseout = function(){
      autoTimer = window.setInterval(autoMove,interval);
      bannerLeft.style.display = bannerRight.style.display = "none"
    }
    //6、实现点击焦点切换
    ~function(){
      for(var i = 0,len = oLis.length;i<len;i++){
        var curLi = oLis[i];
        curLi.index = i;
        curLi.onclick = function(){
          step = this.index;
          setBanner();
        }
      }
    }()
    //7、实现左右切换
    bannerRight.onclick = autoMove;
    bannerLeft.onclick = function(){
      if(step === 0){
        step = jsonData.length;
      }
      step--;
      setBanner();
    }
  </script>
</body>
</html>

以上这篇js学习总结_轮播图之渐隐渐现版(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
datePicker——日期选择控件(with jquery)
Feb 20 Javascript
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
Apr 14 Javascript
JS获取整个页面文档的实现代码
Dec 15 Javascript
基于jquery的图片轮播 tab切换组件
Jul 19 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
vue v-for直接循环数字实例
Nov 07 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 #Javascript
node.js express中app.param的用法详解
Jul 16 #Javascript
Node.js中流(stream)的使用方法示例
Jul 16 #Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 #Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 #Javascript
Vue应用部署到服务器的正确方式
Jul 15 #Javascript
js+html5实现侧滑页面效果
Jul 15 #Javascript
You might like
学习使用curl采集curl使用方法
2012/01/11 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
PHP错误处理函数
2016/04/03 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
先进集体事迹材料
2014/02/17 职场文书
听课评语大全
2014/04/30 职场文书
党员转正申请报告
2015/05/15 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL