轮播图案例

丐版轮播图

<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title> 基础轮播图 banner 移入移出</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    body {
      display: flex;
      justify-content: center;
    }

    .banner {

      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      position: relative;
      width: 500px;
      box-shadow: 0 0 8px #333;

    }

    .slider {
      display: flex;
      justify-content: space-around;
      align-items: center;
      position: absolute;
      bottom: 10px;
      width: 380px;
    }

    .slider span {
      width: 45px;
      height: 45px;
      line-height: 45px;
      background-color: orange;
      text-align: center;
      font-size: 20px;
      color: #fff;
      border-radius: 50%;
      cursor: pointer;
    }

    .btn-wrap span {
      user-select: none;
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
      width: 40px;
      height: 85px;
      line-height: 85px;
      font-size: 32px;
      color: #fff;
      text-align: center;
      background-color: rgba(0, 0, 0, .4);
      cursor: pointer;
    }

    .btn-wrap span:hover {
      background-color: rgba(0, 0, 0, .8);
    }

    .prev {
      left: 0;
    }

    .next {
      right: 0;
    }
  </style>
</head>

<body>
  <div class="banner">
    <img id="pic" src="images/p1.jpg" width="500" height="375" alt="pkq">
    <div class="slider">
      <span style="background-color: pink;">1</span>
      <span>2</span>
      <span>3</span>
      <span>4</span>
    </div>
    <div class="btn-wrap">
      <span class="prev">&lt;</span>
      <span class="next">&gt;</span>
    </div>
  </div>
  <script>
    var oSlider = document.querySelector('.slider')
    var aSpan = document.querySelectorAll('.slider span')
    var oPic = document.querySelector('#pic')
    var oPrev = document.querySelector('.prev')
    var oNext = document.querySelector('.next')

    var index = 0
    var count = 4
    oNext.onclick = function () {
      aSpan[index].style.backgroundColor = 'orange';
      index++
      index = index % count
      oPic.src = `images/p${index + 1}.jpg`
      aSpan[index].style.backgroundColor = '#543';
    }

    oPrev.onclick = function () {
      aSpan[index].style.backgroundColor = 'orange';
      index--
      index = (index +count) % count
      oPic.src = `images/p${index + 1}.jpg`
      aSpan[index].style.backgroundColor = '#543';
    }

    oSlider.onmouseover = function (e) {
      if(e.target.tagName === 'SPAN') {
        aSpan[index].style.backgroundColor = 'orange';
        oPic.src = `images/p${e.target.innerText}.jpg`
        e.target.style.backgroundColor = '#543';
        index = e.target.innerText - 1
      }
    }
  </script>
</body>

</html>

进阶轮播图

<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title> 基础轮播图 banner 移入移出</title>
  <style>
   * {
      margin: 0;
      padding: 0;
    }

    ul {
      list-style: none;
    }

    body {
      display: flex;
      justify-content: center;
    }

    .banner {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      position: relative;
      width: 500px;
      height: 290px;
      margin-top: 100px;
      box-shadow: 0 0 12px #333;
    }

    .pic li {
      display: none;
      position: absolute;
      top: 0;
      left: 0;
    }

    .pic li.on {
      display: block;
    }

    .pic li img {
      width: 500px;
      height: 290px;
    }

    .slider {
      display: flex;
      justify-content: space-around;
      align-items: center;
      position: absolute;
      bottom: 10px;
      width: 380px;
    }

    .slider span {
      width: 45px;
      height: 45px;
      line-height: 45px;
      background-color: orange;
      text-align: center;
      font-size: 20px;
      color: #fff;
      border-radius: 50%;
      cursor: pointer;
    }

    .slider span.active {
      background-color: pink;
    }

    .btn-wrap span {
      user-select: none;
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
      width: 40px;
      height: 85px;
      line-height: 85px;
      font-size: 32px;
      color: #fff;
      text-align: center;
      background-color: rgba(0, 0, 0, .4);
      cursor: pointer;
    }

    .btn-wrap span:hover {
      background-color: rgba(0, 0, 0, .8);
    }

    .prev {
      left: 0;
    }

    .next {
      right: 0;
    }
  </style>
</head>
<body>
  <div class="banner">
    <ul class="pic">
      <li class="on bg333 c368"><img src="images/p1.jpg" alt=""></li>
      <li class="bg333 c368"><img src="images/p2.jpg" alt=""></li>
      <li class="bg333 c368"><img src="images/p3.jpg" alt=""></li>
      <li class="bg333 c368"><img src="images/p4.jpg" alt=""></li>
    </ul>
    <div class="slider">

    </div>
    <div class="btn-wrap">
      <span class="prev">&lt;</span>
      <span class="next">&gt;</span>
    </div>
  </div>
  <script>
    var oSlider = document.querySelector('.slider')
    var oPic = document.querySelector('.pic')
    var oWrap = document.querySelector('.btn-wrap')

    var switchWrap = {
      'prev': function () {
          switchSlider(function () {
          index--
          index = (index +count) % count
        })
      },
      'next': function () {
        switchSlider(function () {
          index++
          index = index % count
        })
      }
    }
    var index = 0
    var count = oPic.children.length
    
    createSlider()

    oWrap.addEventListener('click', function (e) {
      switchWrap[e.target.className] && switchSlider(switchWrap[e.target.className]())
    }, false)
  
    oSlider.addEventListener('mouseover', function (e) {
      if(e.target.tagName === 'SPAN') {
        switchSlider(function () {
            index = e.target.innerText - 1
        })
      }
    }, false)

    function switchSlider (callback) {
      oPic.children[index].classList.remove('on')
      oSlider.children[index].classList.remove('active')
      callback && callback() 
      oPic.children[index].classList.add('on')
      oSlider.children[index].classList.add('active')
    }

    function createSlider () {
      var fragment = document.createDocumentFragment();
      for(var i = 0; i < count; i++) {
        var vDom = document.createElement('span')
        vDom.innerText = i + 1
        fragment.appendChild(vDom)
      }
      fragment.children[0].classList.add('on')
      oSlider.appendChild(fragment)
    }
  </script>
</body>

</html>

动画轮播自动播放

<!DOCTYPE html>
<html lang="zh-cn">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title> 轮播图 </title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    img {
      display: block;
    }

    ul {
      list-style: none;
    }

    body {
      display: flex;
      justify-content: center;
    }

    .banner {
      overflow: hidden;
      position: relative;
      width: 500px;
      box-shadow: 0 0 8px #333;

    }

    .pic-list {
      width: 100%;
    }

    .pic-list li {
      float: left;
    }

    .slider {
      display: flex;
      justify-content: space-around;
      align-items: center;
      position: absolute;
      bottom: 10px;
      width: 380px;
      left: 0;
      right: 0;
      margin: auto;
    }

    .slider span {
      width: 45px;
      height: 45px;
      line-height: 45px;
      background-color: orange;
      text-align: center;
      font-size: 20px;
      color: #fff;
      border-radius: 50%;
      cursor: pointer;
    }

    .btn-wrap span {
      user-select: none;
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
      width: 40px;
      height: 85px;
      line-height: 85px;
      font-size: 32px;
      color: #fff;
      text-align: center;
      background-color: rgba(0, 0, 0, .4);
      cursor: pointer;
    }

    .btn-wrap span:hover {
      background-color: rgba(0, 0, 0, .8);
    }

    .prev {
      left: 0;
    }

    .next {
      right: 0;
    }

    .slider .active {
      background-color: pink;
    }
  </style>
</head>

<body>
  <div class="banner">
    <ul class="pic-list">
      <li><img src="images/1.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/2.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/3.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/4.jpg" alt="" width="500" height="200"></li>
    </ul>
    <div class="slider">
    </div>
    <div class="btn-wrap">
      <span class="prev">&lt;</span>
      <span class="next">&gt;</span>
    </div>
  </div>
  <script src="js/common.js"></script>
  <script>

    var oBanner = $('.banner');
    var oUl = $('.pic-list');
    var aPic = $$('.pic-list li');
    var oBtnWrap = $('.btn-wrap');
    var oSlider = $('.slider');
    var aSlider = oSlider.children;
    var picW = aPic[0].offsetWidth;
    var picLen = aPic.length;
    var index = 0;
    var timer;

    var tapMap = {
      'prev': function (e) {
        move(function () {
          index--;
          index = (picLen + index) % picLen;
        })
      },
      'next': function (e) {
        move(function () {
          index++;
          index = index % picLen;
        })
      }
    }

    init();
    autoTranslate();

    function init() {
      var spanStr = '';
      var firstClass = '';
      oUl.style.width = `${picLen * 100}%`;
      for (var i = 0; i < picLen; i++) {
        firstClass = ''
        if (i === 0) {
          firstClass = 'class="active"';
        }
        spanStr += `<span ${firstClass}>${i + 1}</span>`;
      }
      oSlider.innerHTML = spanStr;
    }

    oBanner.addEventListener('mouseover', function () {
      clearInterval(timer);
    }, false);

    oBanner.addEventListener('mouseout', function () {
      autoTranslate();
    }, false)

    oBtnWrap.addEventListener('click', function (e) {
      e = e || window.event;
      if (e.target.tagName.toLowerCase() === 'span') {
        var btn = e.target;
        if (tapMap[btn.className] && typeof tapMap[btn.className] === 'function') {
          tapMap[btn.className](e);
        }
      }
    }, false);

    oSlider.addEventListener('mouseover', function (e) {
      e = e || window.event;
      if (e.target.tagName.toLowerCase() === 'span') {
        var sliderBtn = e.target;
        move(function () {
          index = getElementIdx(sliderBtn);
        })
      }
    }, false);


    function move(callback) {
      aSlider[index].classList.remove('active');
      callback && callback(); 
      aSlider[index].classList.add('active');
      animate(oUl, {
        marginLeft: -index * picW + 'px'
      })
    }

    //自动切换 轮播 index++;
    function autoTranslate() {
      clearInterval(timer);
      timer = setInterval(function () {
        move(function () {
          index++;
          index = index % picLen;
        });
      }, 1000)
    }
  </script>
</body>

</html>

无缝轮播

<!DOCTYPE html>
<html lang="zh-cn">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title> 轮播图 </title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    img {
      display: block;
    }

    ul {
      list-style: none;
    }

    body {
      display: flex;
      justify-content: center;
    }

    .banner {
      overflow: hidden;
      position: relative;
      width: 500px;
      box-shadow: 0 0 8px #333;

    }

    .pic-list {
      width: 100%;
    }

    .pic-list li {
      float: left;
    }

    .slider {
      display: flex;
      justify-content: space-around;
      align-items: center;
      position: absolute;
      bottom: 10px;
      width: 380px;
      left: 0;
      right: 0;
      margin: auto;
    }

    .slider span {
      width: 45px;
      height: 45px;
      line-height: 45px;
      background-color: orange;
      text-align: center;
      font-size: 20px;
      color: #fff;
      border-radius: 50%;
      cursor: pointer;
    }

    .btn-wrap span {
      user-select: none;
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
      width: 40px;
      height: 85px;
      line-height: 85px;
      font-size: 32px;
      color: #fff;
      text-align: center;
      background-color: rgba(0, 0, 0, .4);
      cursor: pointer;
    }

    .btn-wrap span:hover {
      background-color: rgba(0, 0, 0, .8);
    }

    .prev {
      left: 0;
    }

    .next {
      right: 0;
    }

    .slider .active {
      background-color: pink;
    }
  </style>
</head>

<body>
  <div class="banner">
    <ul class="pic-list">
      <li><img src="images/1.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/2.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/3.jpg" alt="" width="500" height="200"></li>
      <li><img src="images/4.jpg" alt="" width="500" height="200"></li>
    </ul>
    <div class="slider">

    </div>
    <div class="btn-wrap">
      <span class="prev">&lt;</span>
      <span class="next">&gt;</span>
    </div>
  </div>
  <script src="js/common.js"></script>
  <script>

    var oBanner = $('.banner');
    var oUl = $('.pic-list');
    var aPic = $$('.pic-list li');
    var oBtnWrap = $('.btn-wrap');
    var oSlider = $('.slider');
    var aSlider = oSlider.children;
    var picW = aPic[0].offsetWidth;
    var picLen = aPic.length + 1;
    var index = 0;
    var timer;
    init();
    var tapMap = {
      'prev': function (e) {
        move(function () {
          if (index === 0) {
            index = aPic.length - 1;
            oUl.style.marginLeft = -index * picW + 'px';
          }
          index--;
          index = (picLen + index) % picLen;
        });
      },
      'next': function (e) {
        move(function () {
          if (index === aPic.length - 1) {
            console.log('我要瞬间调到0 然后慢慢走到1');
            index = 0;
            oUl.style.marginLeft = -index * picW + 'px';
          }
          index++; //4
          index = index % picLen; // len 5 4%4
        });
      }
    }

    function init() {
      var spanStr = '';
      var firstClass = '';
      oUl.style.width = `${picLen * 100}%`;
      for (var i = 0; i < picLen - 1; i++) {
        firstClass = ''
        if (i === 0) {
          firstClass = 'class="active"';
        }
        spanStr += `<span ${firstClass}>${i + 1}</span>`;
      }
      oSlider.innerHTML = spanStr;
      oUl.appendChild(aPic[0].cloneNode(true));
      aPic = $$('.pic-list li');
      autoTranslate();
    }

    oBanner.addEventListener('mouseover', function () {
      clearInterval(timer);
    }, false);

    oBanner.addEventListener('mouseout', function () {
      autoTranslate();
    }, false);

    oBtnWrap.addEventListener('click', function (e) {
      e = e || window.event;
      if (e.target.tagName.toLowerCase() === 'span') {
        var btn = e.target;
        if (tapMap[btn.className] && typeof tapMap[btn.className] === 'function') {
          tapMap[btn.className](e);
        }
      }
    }, false);

    oSlider.addEventListener('mouseover', function (e) {
      e = e || window.event;
      if (e.target.tagName.toLowerCase() === 'span') {
        var sliderBtn = e.target;
        move(function () {
          index = getElementIdx(sliderBtn);
        })
      }
    }, false);

    function move(callback) {
      aSlider[index % (aPic.length - 1)].classList.remove('active');
      callback && callback(); //插入执行 index修改代码
      //如果index 为4 我们让index 变为0  4%4 3%4 2%4
      aSlider[index % (aPic.length - 1)].classList.add('active');
      animate(oUl, {
        marginLeft: -index * picW + 'px'
      })
    }
    
    //自动切换 轮播 index++;
    function autoTranslate() {
      clearInterval(timer);
      timer = setInterval(function () {
        tapMap['next']();
      }, 1000)
    }
  </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/783409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

惟客数据Q2荣誉成绩单新鲜出炉

作为众多头部企业客户的数字化经营合作伙伴 WakeData惟客数据一直坚持以客户为中心&#xff0c;以数据驱动 致力于让数据智能商业落地更敏捷 凭借值得信赖的客户经营数字化和资源管理数字化实力 惟客数据在2024年第二季度斩获多项荣誉 1、 第一新声《2023年度中国高科技高…

从入门到精通:Shopee,lazada,temu自养号测评成本、步骤、技巧详解

测评对于卖家来说是一种成本低回报快的推广方式&#xff0c;可以减少高额的平台广告费用&#xff0c;因此是一种很好的辅助手段&#xff0c;对商品的曝光、流量、转化和权重等方面起到了很好的辅助作用 建议还是自己精养一批账号&#xff0c;账号在自己手里比较安全可控&#…

python中getattr/setattr/hasattr/delattr函数都是干什么的?

目录 1、getattr&#xff1a;动态获取属性 &#x1f50d; 1.1 动态获取属性 1.2 默认值处理技巧 1.3 实战案例&#xff1a;配置文件动态加载 2、setattr&#xff1a;动态设置属性 &#x1f6e0; 2.1 修改对象属性 2.2 新增属性场景 2.3 应用场景&#xff1a;类的动态配置…

Linux 命令历史、补全和正则表达式

1.命令历史就和windows的ctrlz一个概念&#xff0c;就是返回上一次的命令。 按下小键盘上下切换 ctrlc可以终止本次输入&#xff0c;进行下一次输入。 2.tab键可以自动补全&#xff08;有点鸡肋&#xff09; 3.正则表达式 类似于word的快速搜索&#xff0c;Linux也是用*和…

浅析C++引用

浅析C引用"&" ​ C中引入了一个新的语言特性——引用(&)&#xff0c;它表示某一对象的别名&#xff0c;对象与该对象的引用都是指向统一地址。那么我们就来看看关于引用的一些知识点吧&#x1f9d0; 特性 引用在定义时必须初始化一个变量可以有多个引用引…

zdppy_api+vue3+antd前后端分离开发,使用描述列表组件渲染用户详情信息

后端代码 import api import upload import time import amcomment import env import mcrud import amuserdetailsave_dir "uploads" env.load(".env") db mcrud.new_env()app api.Api(routes[*amcomment.get_routes(db),*amuserdetail.get_routes(db…

记一次微信小程序逆向

扫码领取网安教程 遇到瓶颈了&#xff0c;不知道该干什么&#xff0c;突然想到学校的小程序 闲来无事就看一看 抓包下来的数据是这样的&#xff0c;嗯&#xff0c;下机&#xff08;hhh 一、反编译程序 加密嘛&#xff0c;之前抓了看到是加密就放弃了&#xff0c;现在重新弄一…

轻松转换!两款AI工具让word秒变ppt!

想把Word文档一键生成PPT&#xff0c;过去有一个很常见的做法&#xff1a;先在Word文档中设置标题样式&#xff0c;通过标题样式来分隔每一部分&#xff0c;之后导出为PPT&#xff0c;就能得到一份PPT的雏形&#xff0c;但这种方法无法对PPT自动进行美化&#xff0c;即得到的只…

js替换对象内部的对象名称或属性名称-(第二篇)递归

1.代码示例&#xff1a; function replaceKey(obj, oldKey, newKey) {// 如果不是对象或者oldKey不存在&#xff0c;直接返回原对象if (typeof obj ! object || !obj || !(oldKey in obj)) return obj;// 如果是数组&#xff0c;遍历数组每个元素if (Array.isArray(obj)) {obj…

【Python】一文向您详细介绍 np.inner()

【Python】一文向您详细介绍 np.inner() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…

君方智能设计平台-对象持久化技术方案

1.背景介绍 1.1序列化功能 序列化是将复杂的图形对象、数据结构或对象转换成一种可被存储、传输或分享的格式的过程。这个格式通常是二进制或文本形式&#xff0c;能够轻松地保存在文件中或通过网络发送到其他应用程序。序列化的目的是将数据持久化&#xff0c;使其在不同时间…

【学术会议征稿】2024年第四届工商管理与数据科学学术会议(BADS 2024)

2024年第四届工商管理与数据科学学术会议(BADS 2024) 2024 4th International Conference on Business Administration and Data Science 2024年第四届工商管理与数据科学学术会议(BADS 2024)将于2024年10月25-27日在新疆喀什召开&#xff0c;由喀什大学支持本次会议。会议旨…

Mapboxgl 根据 AWS 地形的高程值制作等高线

更多精彩内容尽在dt.sim3d.cn&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 使用mapboxgl 3.0版本&#xff0c;根据 AWS 地形图块的高程值制作等高线&#xff0c;源码如下&#xff1a; <!DOCTYPE html> &…

OV证书签发一般要多久?

OV证书&#xff0c;即组织验证型SSL证书&#xff0c;的签发流程涉及多个阶段&#xff0c;其具体时间取决于多种因素。OV证书的签发一般需要1-3个工作日&#xff0c;这个过程可以分为以下几个阶段&#xff1a; 1、选择和购买证书&#xff1a; 用户需要在SSL证书服务商处选择合适…

AnaPico为众多工厂产线老化测试提供高效经济的微波解决方案

在电子设备的生产中&#xff0c;老化测试在整个使用寿命期间的可靠性和对声明参数的保证起着重要作用&#xff0c;尤其是在特殊应用&#xff08;国防和航天工业、电信、医药等&#xff09;方面。即使经过成功的参数和功能测试&#xff0c;在实际操作条件下使用时也有可能出现设…

【JSP+Servlet+Maven】——优质外卖订餐系统之概论部分

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

【Linux】进程的概念 + 查看进程

前言&#xff1a; 在前面我们学习了Liunx的基本指令和权限相关知识&#xff0c;还有基本工具的使用&#xff0c;有了以上的基础知识我们本章将正式接触Linux操作系统。 目录 1.冯诺依曼体系结构1.1 内存存在的意义1.2 程序加载到内存的含义1.3 程序的预加载&#xff1a; 2 .认识…

python读取指定文件夹下的图片(glob获取)

python读取指定文件夹下的图片&#xff08;glob获取&#xff09; 定义traverse_images函数&#xff0c;仅需要改变下根路径即可 glob是python中用来查找符合特定规则的文件路径名的函数 import os from glob import globdef traverse_images (folder_path):image_formats …

Google账号输入用户名和密码后提醒要到手机通知点是,还要点击数字,但是我手机收不到

有一些朋友换了一个新的电脑后手机登录谷歌账号时&#xff0c;用户名和密码都正确输入以后&#xff0c;第三步弹出一个提示&#xff0c;要在手机上的通知栏点击是&#xff0c;并且点击手机上相应的数字才能继续登录。 但是自己的手机上下拉通知栏却没有来自谷歌的通知&#xf…

mkv怎么改成mp4格式?把mkv改成MP4的几种方法介绍

mkv怎么改成mp4格式&#xff1f;将mkv格式的视频文件转换为MP4格式是许多用户常常需要解决的问题&#xff0c;尤其是在不同设备之间传输和播放视频时。mkv是一种灵活且功能强大的多媒体容器格式&#xff0c;能够包含多种视频、音频和字幕轨道。然而&#xff0c;尽管其优势显著&…