小小轮播图

简介: 小小轮播图

这篇博客,我为大家带来的还是一个小项目!

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style>
      #box {
        width: 100%;
        height: 450px;
        background-color: palevioletred;
        overflow: hidden;
        
      }
      #boxx {
        width: 400%;
        height: 100%;
      }
 
      #boxx img {
        width: 25%;
        height: 100%;
        float: left;
        background-size: 100%;
      }
 
      #wq {
        width: 40px;
        height: 40px;
        background-color: rgba(243, 243, 243, 0.4);
        position: fixed;
        top: 200px;
        left: 8px;
      }
 
      #wq p {
        text-align: center;
        line-height: 5px;
        font-size: 20px;
        color: rebeccapurple;
      }
 
      #wh {
        width: 40px;
        height: 40px;
        background-color: rgba(243, 243, 243, 0.4);
        position: fixed;
        top: 200px;
        right: 8px;
      }
 
      #wh p {
        text-align: center;
        line-height: 5px;
        font-size: 20px;
        color: mediumpurple;
        
        
      }
 
      #yuand {
        position: absolute;
        top: 430px;
        width: 98%;
        text-align: center;
        color: white;
        
      }
    </style>
  </head>
  <body >
    <div id="box" onmouseover="yr()" onmouseout="yc()">
      <div id="boxx">
        <img src="img/wuztwo.jpg" alt=""  id="imgWidth"/>
        <img src="img/wuzone.webp" alt="" />
        <img src="img/wuzthree.webp" alt="" />
        <img src="img/wuztwo.jpg" alt="" />
      </div>
    <div id="wq" onclick="next()">
      <p>←</p>
    </div>
    <div id="wh" onclick="last()">
      <p>→</p>
    </div>
    <div id="yuand">
      <span>●</span>
      <span>●</span>
      <span>●</span>
      
    </div>
    </div>
    <!--onmouseover="yr()" onmouseout="yc()"-->
    <script src="index.js"></script>
  </body>
</html>

上面的是基本样式;

let k = 0;
//获取到HTML中的最大div box;(为了后期给大div绑定鼠标移入移出事件,把鼠标放图片上会让轮播图停止轮播,放外重新轮播)
let box = document.getElementById('box');
//获取到HTML中的图片列表 boxx;(获取四张图片父级div,以便后期让图片动起来)
let boxx = document.getElementById('boxx');
//获取到一张图片的宽 imgWidth;(boxx的children[0]的宽)offsetWidth
let imgWidth = boxx.children[0].offsetWidth;
console.log(imgWidth);
//获取图片向前按钮 wq;(让图片向后)
let wq = document.getElementById('wq');
//获取图片向后按钮 wh;(让图片向前)
let wh = document.getElementById('wh');
//获取三个小圆点 yuand;(获取数组)
let yuand = document.getElementById('yuand')
//设置永久定时器 setInterval;(Interval)
let Interval = setInterval(autoBanner, 2000);
//每隔两秒执行一次autoBanner
//执行秒数(执行2秒)
//创建一个函数 autoBanner 一次让图片向右移动一张,当图片到最后一张让图片跳到第一张)
function autoBanner() {
  //k++让图片数量加加;
  k++;
  //给boxx图片列表设定过渡效果(1秒)
  document.getElementById('boxx').style.transition = "all 1s";
  //给boxx图片列表设置左边距marginLeft -k*imgwidth 让图片向右移 
  document.getElementById('boxx').style.marginLeft = `${-k*imgWidth}px`;
  //if判断(k是否等于boxx的children.length-1){ 是否是最后一张照片
  if (k == boxx.children.length - 1) {
    setTimeout(function() {
      k = 0;
      document.getElementById('boxx').style.marginLeft = "0";
      document.getElementById('boxx').style.transition = "null";
      yuand.children[0].style.color = "rebeccapurple";
      yuand.children[yuand.children.length - 1].style.color = "white"
    }, 1000)
  } else {
    yuand.children[k].style.color = "rebeccapurple";
    yuand.children[k - 1].style.color = "white";
  }
}
//设置一个一次性定时器 setTimeout(时间设1秒){
//k=0(让图片回到第一张)
//把boxx的外边距margin设为0
//将轮播图boxx过渡效果设为空null
//}
//yuand[0]让第一个小圆点的颜色变为red
//让最后一个小圆点的颜色变回原来的颜色
//  }else{
//让k的小圆点变为red
//让k-1的小圆点变为黑色
//  }
 
//给图片向前一张按钮用 onclick绑定点击事件;
function next() {
  autoBanner();
  wq.onclick = ""
  setTimeout(function() {
    wq.onclick = next
  }, 1500);
}
//创建函数 函数名为next(){
//调用autoBanner()
//先清除下一张按钮这个点击事件
//在一秒之后重新绑定(next)设置一次性定时器
//} 
 
 
 
//创建一个函数backUp;(执行一次让图片向左移动一张,当图片到第一张让图片跳到最后一张){
function backUp() {
  k--;
  // console.log(k);
  document.getElementById('boxx').style.transition = "all 1s";
  document.getElementById('boxx').style.marginLeft = `${-k*imgWidth}px`;
  // console.log(`${+k*imgWidth}px`);
  if (k == 0) {
    setTimeout(function() {
      k = boxx.children.length - 1;
      document.getElementById('boxx').style.marginLeft = `${-k*imgWidth}px`;
      document.getElementById('boxx').style.transition = "null";
      // yuand.children[0].style.color = "rebeccapurple";
      // yuand.children[yuand.children.length-1].style.color = "white"
      yuand.children[k].style.color = "rebeccapurple";
      yuand.children[k + 1].style.color = "white";
    }, 800)
  }
}
//if判断(图片是否到第一张){
//让图片到最后一张(boxx的children.length-1)给k赋值
//先清除boxx的过渡效果 null
//让boxx的外边距marginleft -k*imgwidth
// }
//设置一个一次性定时器(时间为五毫秒){
//k--(让图片向上一张)
//给boxx图片列表设定过渡效果(1秒)
//给boxx图片列表设置左边距marginLeft -k*imgwidth 让图片向右移 
//if判断(k<boxx的children.length-1){
//让k的小圆点变为red
//让k+1的小圆点变为黑色
//  }
// }
//}
 
//给图片向后一张按钮用onclick绑定点击事件;
function last() {
  backUp()
  wh.onclick = ""
  setTimeout(function() {
    wh.onclick = last
  }, 1500)
}
//创建函数 函数名为last(){
//调用函数backUp()
//先清除上一张按钮这个点击事件
//在一秒之后重新绑定(last)设置一次性定时器
//} 
 
 
//给box设置鼠标移入事件 让轮播图停止轮播(onmouseover);
function yr() {
  clearInterval(Interval);
}
//清除永久定时器让轮播图停止自动播放;
 
//给box设置鼠标移除事件 让轮播图继续轮播(onmouseout);
function yc() {
  Interval = setInterval(autoBanner, 2000)
}

这是js里的代码,主要是来操作轮播图的,让其自动轮播,点击轮播,鼠标移入停止,移出轮播!

主要由这几个事件组成!

还有,鼠标移入、移出,事件,是绑给最大div的!

相关文章
|
消息中间件 存储 缓存
RabbitMq如何防止消息被重复消费
RabbitMq如何防止消息被重复消费
1814 0
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1346 1
|
关系型数据库 MySQL 索引
MySQL in 太多的解决方案
MySQL in 太多的解决方案
1309 0
|
消息中间件 存储 网络协议
从原理到实战,手把手教你在项目中使用RabbitMQ
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。 话不多说,上文章目录: 下面我们先回顾一下理论知识,如果对这块知识已经清楚的同学,可以直接跳到实战部分。 1. 消息队列 1.1 消息队列模式 消息队列目前主要 2 种模式,分别为“点对点模式”和“发布/订阅模式”。 点对点模式 一个具体的消息只能由一个消费者消费,多个生产者可以向同一个消息队列发送消息,但是一个消息在被一个消息者处理的时候,这个消息在队列上会被锁住或者被移除并且其他消费者无法处理该消息。 需要额外注意的是,如果消费者
1296 5
|
Java Maven
Maven配置以及IDEA设置(Cannot resolve plugin org.apache.maven.plugins:报错)
Maven配置以及IDEA设置(Cannot resolve plugin org.apache.maven.plugins:报错)
2507 1
|
前端开发 JavaScript
一键复制HTML+CSS动画:让轮播图效果酷炫升级!
一键复制HTML+CSS动画:让轮播图效果酷炫升级!
|
应用服务中间件 Docker Windows
windows基于Docker安装并启动Tomcat(解决404)
windows基于Docker安装并启动Tomcat(解决404)
360 1
|
负载均衡 监控 安全
SpringCloud框架的入门教程
Spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。
304 2
ly~
|
消息中间件 搜索推荐 大数据
一般情况下在 RocketMQ 中添加 access key 的步骤: 一、确定配置文件位置 RocketMQ 的配置文件通常位于安装目录下的 conf 文件夹中。你需要找到 broker.conf 或相关的配置文件。 二、编辑配置文件 打开配置文件,查找与 ACL(访问控制列表)相关的配置部分。 在配置文件中添加以下内容:
大数据广泛应用于商业、金融、医疗和政府等多个领域。在商业上,它支持精准营销、客户细分及流失预测,并优化供应链管理;金融领域则利用大数据进行风险评估、市场预测及欺诈检测;医疗行业通过大数据预测疾病、提供个性化治疗;政府运用大数据进行城市规划和公共安全管理;工业领域则借助大数据进行设备维护、故障预测及质量控制。
ly~
897 2
|
前端开发 JavaScript 容器
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
218 0