zoukankan      html  css  js  c++  java
  • JS---案例:完整的轮播图---重点!

    案例:完整的轮播图

    思路:

    分5部分做

    1. 获取所有要用的元素

    2. 做小按钮,点击移动图标部分

    3. 做右边焦点按钮,点击移动图片,小按钮颜色一起跟着变 (克隆了第一图到第六图,用索引liObj.setAttribute("index", i),pic = this.getAttribute("index");pic++, 当pic到5的时候,就回到pic=0的时候,同时设置样式)

    4. 做左边焦点按钮 (用索引,当pic=0的时候,pic--,设置样式)

    5. 自动轮播加上,设置个定时器,鼠标进入就清除定时器,鼠标移开就启用定时器

    <!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: #DB192A;
        }
    
        #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">&lt;</span><span id="right">&gt;</span></div>
      </div>
      <script src="common.js"></script>
      <script>
    
        //获取最外面的div
        var box = my$("box");
        //获取相框
        var screen = box.children[0];
        //获取当前相框的宽度
        var imgWidth = screen.offsetWidth;
        //获取ul
        var ulObj = screen.children[0];
        //获取ul中所有的li
        var list = ulObj.children;
        //获取ol
        var olObj = screen.children[1];
        //获取焦点的div
        var arr = my$("arr");
    
        var pic = 0;//全局变量
        //创建小按钮,根据ul中li的个数
        for (var i = 0; i < list.length; i++) {
          //创建li标签,加入到ol中
          var liObj = document.createElement("li");
          olObj.appendChild(liObj);
          liObj.innerHTML = (i + 1);
          //在每个ol中的li标签上添加一个自定义属性,存储索引值
          liObj.setAttribute("index", i);
          //注册鼠标进入时间
          liObj.onmouseover = function () {
            //先干掉所有ol中的li背景颜色
            for (var j = 0; j < olObj.children.length; j++) {
              olObj.children[j].removeAttribute("class");
            }
            //设置当前鼠标进入li的背景颜色
            this.className = "current";
            //设置鼠标进入的li的当前索引值
            pic = this.getAttribute("index");
            //移动ul
            animate(ulObj, -pic * imgWidth);
          };
        }
    
        //克隆一个ul中第一个li,加入到ul中的最后----克隆
        ulObj.appendChild(ulObj.children[0].cloneNode(true));
    
        //  自动播放
        var timeId = setInterval(clickHandle, 1000);
    
        //鼠标进入到box 显示左右焦点的div
        box.onmouseover = function () {
          arr.style.display = "block";
          //鼠标进入废掉之前的定时器
          clearInterval(timeId);
        };
        //鼠标离开box,隐藏左右焦点的div
        box.onmouseout = function () {
          arr.style.display = "none";
          timeId = setInterval(clickHandle, 1000);
        };
    
        //右边按钮
        my$("right").onclick = clickHandle;
        function clickHandle() {
          //如果pic的值是5,恰巧是ul中li的个数-1的值,此时页面显示第六个图片
          //而客户认为这是一个图,所以如果用户再次点击按钮,应该看到第二个图片
          if (pic == list.length - 1) {
            //如何从第六个图跳转到第一个图
            pic = 0; //先设置pic=0;
            ulObj.style.left = 0 + "px";//把ul位置还原成开始的默认位置
          }
          pic++;//立刻设置pic+1,那么用户就会看到第二个图片;
          animate(ulObj, -pic * imgWidth);
          //如果pic==5,此时显示第六个图,内容是第一张图片,第一个小按钮有颜色
          if (pic == list.length - 1) {
            //第五个颜色干掉
            olObj.children[olObj.children.length - 1].className = "";
            olObj.children[0].className = "current";
          } else {
            //干掉所有小按钮背景颜色
            for (var i = 0; i < olObj.children.length; i++) {
              olObj.children[i].removeAttribute("class");
            }
            olObj.children[pic].className = "current";
          }
        };
    
        //左边按钮
        my$("left").onclick = function () {
          if (pic == 0) {
            pic = 5;
            ulObj.style.left = -pic * imgWidth + "px";
          }
          pic--;
          animate(ulObj, -pic * imgWidth);
          //设置小按钮的颜色---先所有小按钮干掉颜色
          for (var i = 0; i < olObj.children.length; i++) {
            olObj.children[i].removeAttribute("class");
          }
          //当前pic索引对应的按钮,设置颜色
          olObj.children[pic].className = "current";
        };
    
    // </script>
    
    </body>
    
    </html>
  • 相关阅读:
    EMQTT测试--安装与测试 (windows)
    phpStudy本地搭建wordpress教程
    windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)
    mysql允许外网访问 和修改mysql 账号密码
    mysql sql常用语句
    Mysql(MyISAM和InnoDB)及Btree和索引优化
    Python 有关网址
    Python 字典(Dictionary)操作详解
    pandas读取xlsx
    Python 学习笔记 (变量与数据类型)
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/12032258.html
Copyright © 2011-2022 走看看