js实现轮播图的两种方式(构造函数、面向对象)

yizhihongxing

下面是详细讲解js实现轮播图的两种方式的完整攻略。

构造函数实现轮播图

步骤1:HTML结构

首先需要有一个HTML结构,用于放置轮播图的图片及导航按钮,示例如下:

<div class="slider">
  <ul>
    <li><img src="img1.jpg"></li>
    <li><img src="img2.jpg"></li>
    <li><img src="img3.jpg"></li>
  </ul>
  <ol>
    <li class="active"></li>
    <li></li>
    <li></li>
  </ol>
</div>

其中,ul标签中的li标签是轮播图的图片,可以根据需要添加、删除;ol标签中的li标签是导航按钮,用于切换轮播图。

步骤2:CSS样式

通过CSS样式设置轮播图的显示效果、过渡效果以及导航按钮的样式。示例如下:

.slider {
  width: 500px;
  height: 250px;
  overflow: hidden;
  position: relative;
}

.slider ul {
  width: 1500px;
  height: 250px;
  list-style: none;
  margin: 0;
  padding: 0;
  position: absolute;
}

.slider ul li {
  width: 500px;
  height: 250px;
  float: left;
}

.slider ol {
  position: absolute;
  right: 10px;
  bottom: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.slider ol li {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #ccc;
  margin: 5px;
  float: left;
  cursor: pointer;
}

.slider ol li.active {
  background: #f00;
}

步骤3:JavaScript代码

通过JavaScript代码实现轮播图的自动播放、导航按钮切换以及手动切换等功能。示例如下:

function Slider(selector) {
  this.slider = document.querySelector(selector);
  this.sliderUl = this.slider.querySelector('ul');
  this.sliderLis = this.sliderUl.querySelectorAll('li');
  this.sliderOl = this.slider.querySelector('ol');
  this.sliderOls = this.sliderOl.querySelectorAll('li');
  this.len = this.sliderLis.length;
  this.index = 0;

  // 自动播放
  this.timer = setInterval(() => {
    this.index++;
    if (this.index >= this.len) {
      this.index = 0;
    }
    this.change();
  }, 2000);

  // 鼠标移入暂停播放
  this.slider.addEventListener('mouseenter', () => {
    clearInterval(this.timer);
  });

  // 鼠标移出继续播放
  this.slider.addEventListener('mouseleave', () => {
    this.timer = setInterval(() => {
      this.index++;
      if (this.index >= this.len) {
        this.index = 0;
      }
      this.change();
    }, 2000);
  });

  // 点击导航按钮切换
  for (let i = 0; i < this.len; i++) {
    this.sliderOls[i].addEventListener('click', () => {
      this.index = i;
      this.change();
    });
  }
}

Slider.prototype.change = function() {
  for (let i = 0; i < this.len; i++) {
    this.sliderOls[i].className = '';
    this.sliderLis[i].style.opacity = 0;
    this.sliderLis[i].style.zIndex = 0;
  }
  this.sliderOls[this.index].className = 'active';
  this.sliderLis[this.index].style.opacity = 1;
  this.sliderLis[this.index].style.zIndex = 1;
};

实例化轮播图对象并调用:

new Slider('.slider');

面向对象实现轮播图

步骤1:HTML结构

同样需要有一个HTML结构用于放置轮播图的图片及导航按钮,与构造函数方式相同。

步骤2:CSS样式

同样需要通过CSS样式设置轮播图的显示效果,与构造函数方式相同。

步骤3:JavaScript代码

通过面向对象的方式实现轮播图的自动播放、导航按钮切换以及手动切换等功能。示例如下:

function Slider(selector) {
  this.slider = document.querySelector(selector);
  this.sliderUl = this.slider.querySelector('ul');
  this.sliderLis = this.sliderUl.querySelectorAll('li');
  this.sliderOl = this.slider.querySelector('ol');
  this.sliderOls = this.sliderOl.querySelectorAll('li');
  this.len = this.sliderLis.length;
  this.index = 0;
  this.timer = null;
}

Slider.prototype.init = function() {
  this.autoPlay();
  this.mouseEvent();
  this.buttonEvent();
};

Slider.prototype.autoPlay = function() {
  this.timer = setInterval(() => {
    this.index++;
    if (this.index >= this.len) {
      this.index = 0;
    }
    this.change();
  }, 2000);
};

Slider.prototype.mouseEvent = function() {
  this.slider.addEventListener('mouseenter', () => {
    clearInterval(this.timer);
  });
  this.slider.addEventListener('mouseleave', () => {
    this.autoPlay();
  });
};

Slider.prototype.buttonEvent = function() {
  for (let i = 0; i < this.len; i++) {
    this.sliderOls[i].addEventListener('click', () => {
      this.index = i;
      this.change();
    });
  }
};

Slider.prototype.change = function() {
  for (let i = 0; i < this.len; i++) {
    this.sliderOls[i].className = '';
    this.sliderLis[i].style.opacity = 0;
    this.sliderLis[i].style.zIndex = 0;
  }
  this.sliderOls[this.index].className = 'active';
  this.sliderLis[this.index].style.opacity = 1;
  this.sliderLis[this.index].style.zIndex = 1;
};

// 实例化轮播图对象并调用
const slider = new Slider('.slider');
slider.init();

这种方式相对于构造函数方式来说,代码更加面向对象,可扩展性更强。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现轮播图的两种方式(构造函数、面向对象) - Python技术站

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

相关文章

  • 微信怎么查询注册时间?微信注册时间两种查询方法

    微信怎么查询注册时间? 微信是一款非常流行的社交媒体应用程序,许多人都想知道自己的微信注册时间。以下是两种查询微信注册时间的方法: 方法一:通过微信个人资料页面查询 打开微信应用程序并登录您的帐户。 在底部导航栏中,点击“我”选项卡,进入个人资料页面。 在个人资料页面上,向下滚动,直到找到“帐号与安全”部分。 点击“帐号与安全”部分下的“更多设置”选项。 在…

    other 2023年8月3日
    00
  • 微软Win10 SDK开发者工具已正式发布 附下载地址

    标题:微软Win10 SDK开发者工具已正式发布 附下载地址 首先介绍Win10 SDK开发者工具的概念以及作用,Win10 SDK开发者工具是一组开发工具和库,它可用于构建应用程序以运行在Windows 10操作系统上。开发人员可以使用Win10 SDK开发者工具,创建各种不同的应用程序,例如桌面应用程序、UWP应用程序、游戏、设备驱动程序,还可以开发各种…

    other 2023年6月26日
    00
  • sockjs-client

    sockjs-client攻略 sockjs-client是一个JavaScript库,用于在Web浏览器中实现WebSocket协议的替代方案。它提供了一种可靠的、跨浏览器的方式来实现实时通信,支持多种传输协议,包括XHR流、JSONP流和HTML文件流。以下是关于sockjs-client的完整攻略,包括库的概述、使用场景、库的特点、库的实现和示例说明。…

    other 2023年5月7日
    00
  • idea2020.2激活码

    以下是获取Idea 2020.2激活码的完整攻略,包含两个示例: 步骤1:下载Idea 2020.2 首先,下载Idea 2020.2。您可以从JetBrains官网下载Idea 2020.2的安装程序。 步骤2:安装I2020.2 安装Idea 2020.2的过程与安装其他软件的过程类似。您只需要按照安装的指示进行操作即可。 步骤3:获取激活码 以下是获取…

    other 2023年5月6日
    00
  • SQL 新增/修改 表字段列的类型等

    为了更好的理解SQL新增/修改表字段列类型等操作,从以下几点进行详细讲解。 一、表的创建 首先,我们需要了解如何创建表。创建表的SQL语句格式为: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, ….. ); 其中 table_name 表示表…

    other 2023年6月25日
    00
  • html表格宽度固定

    HTML表格宽度固定 HTML表格在网页设计中扮演着非常重要的角色,但是表格太宽或太窄都可能影响到页面的美观和可读性,因此控制表格的宽度是一个必须要考虑的问题。本文将会介绍如何使用HTML和CSS来固定表格的宽度。 HTML 让表格自适应 在HTML中,表格的宽度默认是自适应的,也就是说表格的宽度会根据表格内容的多少自动调整。要指定表格的宽度,可以使用wid…

    其他 2023年3月28日
    00
  • 什么是深度学习?

    深度学习是机器学习的一种分支,使用多层神经网络模型进行特征提取和模型训练,以解决复杂的分类和预测问题。深度学习可以应用于图像识别、语音识别、自然语言处理等领域,在人工智能领域中具有重要的地位。 深度学习的完整攻略可以按照以下步骤进行: 数据准备在进行深度学习之前,首先需要准备好数据集。通常情况下,数据集需要包含大量的数据样本,并且需要进行标注。常用的公开数据…

    其他 2023年4月19日
    00
  • sql根据表名获取字段及对应说明

    要根据表名获取字段及对应说明,需要使用SQL语句中的“DESCRIBE”或是“SHOW COLUMNS”命令。 下面分别介绍这两个方法的使用步骤。 Method 1: 使用DESCRIBE命令 使用DESCRIBE命令,可以查询指定表格下的所有字段信息,包括字段名、数据类型、键类型、是否为null等。 查看表结构 使用DESCRIBE命令可以查看指定表的结构…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部