js制作轮播图效果

yizhihongxing

下面是详细讲解“js制作轮播图效果”的完整攻略:

1. 确定需求

首先确定需求,也就是轮播图的要求。比如需要自动播放、可以手动切换、需要圆点分页器等等。根据不同的需求,我们会采用不同的实现方法。

在这里,我们暂定轮播图的基本要求为:自动播放、手动切换、圆点分页器。

2. HTML结构

根据需求,确定好HTML结构的基本框架,比如轮播图盒子、轮播图图片、圆点分页器等等。在本例中,HTML结构如下:

<div id="slider">
  <ul class="slider-img">
    <li><img src="img/1.jpg" alt="轮播图1"></li>
    <li><img src="img/2.jpg" alt="轮播图2"></li>
    <li><img src="img/3.jpg" alt="轮播图3"></li>
    <li><img src="img/4.jpg" alt="轮播图4"></li>
  </ul>
  <ul class="slider-nav">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

其中,slider为轮播图盒子,slider-img为轮播图图片列表,slider-nav为圆点分页器,active为当前选中的圆点。

3. CSS样式

编写CSS样式,使轮播图可以正常显示。在本例中,CSS样式如下:

#slider {
  width: 600px;
  height: 400px;
  overflow: hidden;
  position: relative;
  margin: 0 auto;
}

.slider-img {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 2400px;
  position: absolute;
  top: 0;
  left: 0;
}

.slider-img li {
  float: left;
  width: 600px;
  height: 400px;
}

.slider-img li img {
  width: 100%;
  height: 100%;
}

.slider-nav {
  list-style-type: none;
  margin: 0;
  padding: 0;
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}

.slider-nav li {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #999;
  margin-right: 10px;
  float: left;
  cursor: pointer;
}

.slider-nav li.active {
  background-color: #ff6600;
}

4. JavaScript实现

4.1 自动播放

思路:定义一个变量index用于记录当前显示的图片索引,定义一个函数showNext用于切换下一张图片,定义一个定时器timer,每隔一定的时间执行showNext()

实现代码:

var index = 0;
var timer = null;

function showNext() {
  index++;
  if (index >= 4) {
    index = 0;
  }
  var imgList = document.querySelectorAll(".slider-img li");
  var navList = document.querySelectorAll(".slider-nav li");
  for (var i = 0; i < imgList.length; i++) {
    imgList[i].style.display = "none";
    navList[i].classList.remove("active");
  }
  imgList[index].style.display = "block";
  navList[index].classList.add("active");
}

timer = setInterval(showNext, 2000);

4.2 手动切换

思路:给圆点分页器绑定click事件,在事件中获取当前圆点的索引,然后将index设置为当前索引,调用showNext()函数。

实现代码:

var navList = document.querySelectorAll(".slider-nav li");
for (var i = 0; i < navList.length; i++) {
  navList[i].addEventListener("click", function() {
    var index = Array.prototype.indexOf.call(navList, this);
    var imgList = document.querySelectorAll(".slider-img li");
    for (var i = 0; i < imgList.length; i++) {
      imgList[i].style.display = "none";
      navList[i].classList.remove("active");
    }
    imgList[index].style.display = "block";
    navList[index].classList.add("active");
  });
}

5. 完整代码及示例

HTML代码:

<div id="slider">
  <ul class="slider-img">
    <li><img src="img/1.jpg" alt="轮播图1"></li>
    <li><img src="img/2.jpg" alt="轮播图2"></li>
    <li><img src="img/3.jpg" alt="轮播图3"></li>
    <li><img src="img/4.jpg" alt="轮播图4"></li>
  </ul>
  <ul class="slider-nav">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>

CSS代码:

#slider {
  width: 600px;
  height: 400px;
  overflow: hidden;
  position: relative;
  margin: 0 auto;
}

.slider-img {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 2400px;
  position: absolute;
  top: 0;
  left: 0;
}

.slider-img li {
  float: left;
  width: 600px;
  height: 400px;
}

.slider-img li img {
  width: 100%;
  height: 100%;
}

.slider-nav {
  list-style-type: none;
  margin: 0;
  padding: 0;
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}

.slider-nav li {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #999;
  margin-right: 10px;
  float: left;
  cursor: pointer;
}

.slider-nav li.active {
  background-color: #ff6600;
}

JavaScript代码:

var index = 0;
var timer = null;

function showNext() {
  index++;
  if (index >= 4) {
    index = 0;
  }
  var imgList = document.querySelectorAll(".slider-img li");
  var navList = document.querySelectorAll(".slider-nav li");
  for (var i = 0; i < imgList.length; i++) {
    imgList[i].style.display = "none";
    navList[i].classList.remove("active");
  }
  imgList[index].style.display = "block";
  navList[index].classList.add("active");
}

timer = setInterval(showNext, 2000);

var navList = document.querySelectorAll(".slider-nav li");
for (var i = 0; i < navList.length; i++) {
  navList[i].addEventListener("click", function() {
    var index = Array.prototype.indexOf.call(navList, this);
    var imgList = document.querySelectorAll(".slider-img li");
    for (var i = 0; i < imgList.length; i++) {
      imgList[i].style.display = "none";
      navList[i].classList.remove("active");
    }
    imgList[index].style.display = "block";
    navList[index].classList.add("active");
  });
}

实例1:点击查看

实例2:点击查看

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js制作轮播图效果 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js 编写规范

    下面我来详细讲解“JS 编写规范”的攻略。 规范一:命名规范 变量和函数名:使用小驼峰式命名法,首字母小写,如 firstName。 常量名:使用全大写命名法,单词之间使用下划线分割,如 MAX_NUM。 类名:使用帕斯卡命名法,首字母大写,如 Person。 私有成员:使用下划线前缀标识私有成员,如 _private. 示例代码1: let count =…

    JavaScript 2023年5月18日
    00
  • 浅析JSON序列化与反序列化

    浅析JSON序列化与反序列化 JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。 JSON格式的数据结构包括以下几个部分: 数组:用方括号([])表示,里面包含一组项,各项之间用逗号隔开。 对象:用花括号({})表示,里面包含一组键值对,各键值对之间用逗号隔开,…

    JavaScript 2023年6月11日
    00
  • 完整显示当前日期和时间的JS代码

    下面是讲解“完整显示当前日期和时间的JS代码”的完整攻略。 1. 基本知识 要完整显示当前日期和时间,我们需要掌握以下两个知识点: 获取当前日期和时间的JS方法。在JS中,我们可以使用Date()方法来获取当前日期和时间。例如,以下代码可以获取当前时间并将其以字符串格式显示在控制台上: console.log(Date()); 将JS日期格式化成指定格式。通…

    JavaScript 2023年5月27日
    00
  • php正则删除html代码中class样式属性的方法 原创

    PHP正则删除HTML代码中class样式属性的方法 在PHP中,删除HTML代码中的Class样式属性是一个常见的需求,我们可以使用正则表达式来完成。下面将介绍如何使用正则表达式来删除HTML代码中的Class样式属性。 使用preg_replace函数 PHP中的preg_replace函数可以使用正则表达式替换子串。我们可以使用此函数删除HTML代码中…

    JavaScript 2023年6月10日
    00
  • JS数组方法concat()用法实例分析

    JS数组方法concat()用法实例分析 简介 JavaScript中的数组方法concat()可以将多个数组(或值)连接成一个新数组,并返回该新数组。原数组不会被改变。该方法不会改变原始数组,而是返回一个新数组。 该方法是 JavaScript 的一个重要工具,可以用在很多场合。比如: 连接不同的数组,创建一个新的数组。 将一个或多个值添加到数组中。 将数…

    JavaScript 2023年5月27日
    00
  • js本地图片预览实现代码

    下面是详细讲解 JavaScript 实现本地图片预览的完整攻略。 1. 通过 <input type=”file”> 获取图片原始信息 要在页面中实现本地图片预览的功能,首先需要在 HTML 中添加一个带有 type=”file” 属性的 <input> 元素,用于获取用户选择的文件信息。 <input type="…

    JavaScript 2023年6月11日
    00
  • 2019年前端必用js正则(小结)

    2019年前端必用js正则(小结) 正则表达式是一种字符串匹配的工具,可以在前端开发中处理文本、验证输入、搜索替换等各种问题。下面是一些前端开发中可能会用到的JavaScript正则表达式。 常用的正则表达式 邮箱格式验证 const emailReg = /^([a-zA-Z0-9._-]+)@([a-zA-Z0-9_-]+)\.([a-zA-Z]{2,6…

    JavaScript 2023年6月10日
    00
  • JS如何实现一个单文件组件

    要实现一个单文件组件,我们需要使用Vue.js这个通用的组件框架来开发。 以下是实现一个单文件组件的步骤: 第一步:安装和配置Vue.js 在项目文件夹下运行以下命令安装Vue.js npm install -g vue 创建一个Vue项目 vue create my-project 运行Vue项目 cd my-project npm run serve 第…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部