web技术

用三种方式实现轮播图

2023-06-30 10:26 作者:Admin

轮播图的实现原理

顾名思义,轮播图就是实现图片的轮换播放效果。先显示一张图片,一定的时间,让这张图片消失,下一张图片显示。让它们实现跟淘宝首页一样的广告轮播效果。

首先是前端html代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>轮播图</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        text-decoration: none;
      }
      .top {
        width: 700px;
        margin: 0 auto;
        height: 500px;
        border: 1px solid;
        background-repeat: no-repeat;
      }
      img {
        width: 700px;
        height: 500px;
      }
      .inner1,
      .inner2,
      .inner3,
      .inner4 {
        position: absolute;
        margin-top: 0;
        display: block;
      }
      .ul {
        width: 150px;
        height: 15px;
        font-size: 10px;
        line-height: 15px;
        text-align: center;
        margin: 0 auto;
      }
      .first {
        display: inline-block;
        width: 15px;
        height: 15px;
        border: 1px solid;
        background-color: lightblue;
        border-radius: 50%;
        margin-right: 15px;
      }
      .first:hover {
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="top">
      <div class="inner1">
        <img src="img/1.jpg" />
      </div>
      <div class="inner2">
        <img src="img/2.jpg" />
      </div>
      <div class="inner3">
        <img src="img/3.jpg" />
      </div>
      <div class="inner4">
        <img src="img/4.jpg" />
      </div>
    </div>
    <div class="ul">
      <ul>
        <li class="first one">1</li>
        <li class="first two">2</li>
        <li class="first three">3</li>
        <li class="first four">4</li>
      </ul>
    </div>
  </body>
</html>

图片可以设置成自己想要的图片,只需要在img src后换成自己本地的图片就行。

js代码

使用display实现轮播

<script type="text/javascript">
//获取img
var img = document.querySelectorAll("img"); //通过选择器,获取img
var li = document.querySelectorAll("li");
var div = document.querySelectorAll(".top div");
// console.log(img);
var index = 0; //定义一个初始值为0的变量
function scrol() {
  //使用display实现
  //隐藏
  for (var i = 0; i < img.length; i++) {
    //设置让三个隐藏,一个显示
    img[i].style.display = "none"; //把所有的img隐藏
    li[i].style.backgroundColor = ""; //分页颜色全都不显示
  }
  img[index].style.display = "block"; //让一个显示
  li[index].style.backgroundColor = "red"; //一个分页显示颜色
  index++; //自增
  if (index == div.length) {
    index = 0;
  }
}
var timer = setInterval(scrol, 500); //设置定时器
function mOver(index) {
  //设置鼠标移动在分页上的函数
  clearInterval(timer); //清除定时器
  for (var i = 0; i < div.length; i++) {
    //循环实现分页颜色的变化
    div[i].style.zIndex = "1"; //让所有图片隐藏
    li[i].style.backgroundColor = ""; //分页颜色失效
  }
  div[index].style.zIndex = "9"; //当前选中分页显示
}
function mOut() {
  //鼠标移出让它继续轮播
  timer = setInterval(scrol, 500);
}
for (var i = 0; i < div.length; i++) {
  li[i].onmouseover = function () {
    mOver(i);
  };
  li[i].onmouseout = function () {
    mOut(i);
  };
}
</script>

使用zIndex实现轮播

zIndex我的理解就是屏幕离人的距离,就是z轴。值越大,离人的距离越近,也就是首先显示出来

//使用zIndex实现
for (var i = 0; i < div.length; i++) {
  div[i].style.zIndex = "1";
  li[i].style.backgroundColor = "";
}
div[index].style.zIndex = "9";
li[index].style.backgroundColor = "red";
index++;
if (index == div.length) {
  index = 0;
}

使用透明度实现轮播

透明度是0-1之间,0是透明,1是不透明,也就是显示出来

//使用透明度实现
for (var i = 0; i < img.length; i++) {
  img[i].style.opacity = "0";
  li[i].style.backgroundColor = "";
}
img[index].style.opacity = "1";
li[index].style.backgroundColor = "red";
index++;
if (index == img.length) {
  index = 0;
}

总结

轮播图,刚才是我做的时候首先想到的是使用for循环实现轮播图,做的过程中发现,for循环实在是太快,肉眼根本捕捉不到。就想到使用定时器,每隔多长时间调用这个函数,就能实现轮播的效果。我的总体思路就是先让其他隐藏,让一个显示,然后定时器每调用一个就能实现一个的显示其他的隐藏。

标签: #轮播图 #JavaScript
推荐文章
HTML5 Canvas是一种强大的Web技术,它允许我们使用JavaScript在网页上创建和...
在这个程序中,我们将使用JavaScript创建一个可以在屏幕上放烟花的效果。我...
轮播图在网站中几乎无处不在,占用地方少,交互性好。今天就来聊聊如何用vu...
大部分网站或APP的首页差不多都运用到了轮播图,下边就探讨一下关于轮播图的...
轮播图实现思路:1、img_ul类里面存放img标签,将需要展示的图片依次排开,在...
推荐专题
如何自己建网站?建网站难不难?其实建网站说难不难,说容易也并不容易,难...
本专题精心收集整理了多种HTML+CSS+JS轮播图实现方案,带详细代码和讲解,正...