原生js实现简单轮播图

下面是原生JS实现简单轮播图的完整攻略。

1. 准备工作

在HTML文件中,需要定义一个容器作为轮播图的父元素,同时在其中添加轮播图片的子元素。例如,在以下代码中,容器的ID为slider,共有3张轮播图片。

<div id="slider">
  <img src="1.jpg" alt="image1">
  <img src="2.jpg" alt="image2">
  <img src="3.jpg" alt="image3">
</div>

2. 实现轮播图

为了实现轮播功能,我们需要控制图片在父元素内部的位置,即控制轮播容器的left值,在此基础上实现自动轮播和手动轮播两种模式。

2.1 控制容器位置

通过CSS属性position: relative将容器定义为相对定位的元素,该元素的子元素可以使用position: absolute实现相对该元素的定位。

#slider {
  position: relative;
  width: 100%;
  overflow: hidden;
}
#slider > img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: auto;
  opacity: 0;
}

为了实现图片的切换效果,我们使用opacity属性控制当前图片的透明度,使其渐隐渐现。其中,opacity的值为0时表示该元素完全透明,值为1时表示元素不透明。

2.2 自动轮播

为了实现轮播图的自动播放,我们需要设置一个定时器,在每隔一段时间后将容器位置向左移动一张图片的距离。

var slider = document.getElementById('slider');
var images = slider.getElementsByTagName('img');
var current = 0;

function autoPlay() {
  images[current].style.opacity = 0;
  current = (current + 1) % images.length;
  images[current].style.opacity = 1;
  slider.style.left = '-' + current + '00%';
}

setInterval(autoPlay, 2000);

在上述代码中,我们定义current变量表示当前显示的图片序号,依次将其与images数组中的元素作比较,实现图片的透明度控制并将容器位置向左移动。当current的值到达图片数量的最大值时,需要对其进行取模,保证实现循环轮播的效果。

2.3 手动轮播

为了实现轮播图的手动播放,我们需要监听容器的左右滑动事件,与自动播放相似,将容器位置向左或向右移动一张图片的距离,以实现手动切换图片的效果。

var startX, endX;
slider.addEventListener('touchstart', function(event) {
  startX = event.touches[0].clientX;
});
slider.addEventListener('touchmove', function(event) {
  endX = event.touches[0].clientX;
  event.preventDefault();
});
slider.addEventListener('touchend', function(event) {
  if (endX - startX > 50) {
    images[current].style.opacity = 0;
    current = (current - 1 + images.length) % images.length;
    images[current].style.opacity = 1;
    slider.style.left = '-' + current + '00%';
  } else if (startX - endX > 50) {
    images[current].style.opacity = 0;
    current = (current + 1) % images.length;
    images[current].style.opacity = 1;
    slider.style.left = '-' + current + '00%';
  }
});

在上述代码中,我们定义了startXendX两个变量,分别记录手指接触和移动的位置。当手指完成滑动时,根据startXendX的差值判断轮播方向,如大于50像素则向右移动,小于-50像素则向左移动。

3. 示例说明

3.1 示例一

以下是一个基本的轮播图示例,该示例实现了基础的自动轮播功能。

<div id="slider">
  <img src="1.jpg" alt="image1">
  <img src="2.jpg" alt="image2">
  <img src="3.jpg" alt="image3">
</div>
<script>
var slider = document.getElementById('slider');
var images = slider.getElementsByTagName('img');
var current = 0;

function autoPlay() {
  images[current].style.opacity = 0;
  current = (current + 1) % images.length;
  images[current].style.opacity = 1;
  slider.style.left = '-' + current + '00%';
}

setInterval(autoPlay, 2000);
</script>

3.2 示例二

以下是一个带有手动轮播功能的轮播图示例,该示例实现了基础的自动轮播功能和手动轮播功能。

<div id="slider">
  <img src="1.jpg" alt="image1">
  <img src="2.jpg" alt="image2">
  <img src="3.jpg" alt="image3">
</div>
<script>
var slider = document.getElementById('slider');
var images = slider.getElementsByTagName('img');
var current = 0;
var startX, endX;
slider.addEventListener('touchstart', function(event) {
  startX = event.touches[0].clientX;
});
slider.addEventListener('touchmove', function(event) {
  endX = event.touches[0].clientX;
  event.preventDefault();
});
slider.addEventListener('touchend', function(event) {
  if (endX - startX > 50) {
    images[current].style.opacity = 0;
    current = (current - 1 + images.length) % images.length;
    images[current].style.opacity = 1;
    slider.style.left = '-' + current + '00%';
  } else if (startX - endX > 50) {
    images[current].style.opacity = 0;
    current = (current + 1) % images.length;
    images[current].style.opacity = 1;
    slider.style.left = '-' + current + '00%';
  }
});

function autoPlay() {
  images[current].style.opacity = 0;
  current = (current + 1) % images.length;
  images[current].style.opacity = 1;
  slider.style.left = '-' + current + '00%';
}

setInterval(autoPlay, 2000);
</script>

以上就是原生JS实现简单轮播图的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现简单轮播图 - Python技术站

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

相关文章

  • HTML+CSS+JS实现图片的瀑布流布局的示例代码

    以下是HTML+CSS+JS实现图片瀑布流布局的攻略: 什么是图片瀑布流布局 图片瀑布流布局是一种网页排版方式,通过不规则的排列方式,在多个列上交错放置图片,看起来像瀑布一样流动。瀑布流布局时常用于展示图片等内容的的网站,比如国内的花瓣网。 实现步骤 1.编写HTML结构 首先,需要在HTML文件中编写好图片布局的基础结构,即一组div元素,每个div元素包…

    css 2023年6月9日
    00
  • css实现电梯导航的项目实践

    下面我为你详细讲解“CSS实现电梯导航的项目实践”的攻略。 背景介绍 电梯导航是指一个固定位置的导航栏,在滚动页面的过程中,根据页面的位置的不同,导航栏上的对应按钮会高亮显示。用 CSS 实现电梯导航,可以提升页面的用户体验和可用性。 实现步骤 确定页面布局 首先,需要确定电梯导航的位置和布局。一般来说,电梯导航可以放置在页面的固定位置,比如页面左侧或右侧,…

    css 2023年6月10日
    00
  • PHPWind7.0风格css样式详解

    PHPWind7.0风格css样式详解 引言 PHPWind7.0是一款轻量级的PHP开源论坛系统,也是国内比较常用的论坛系统之一。本文主要介绍PHPWind7.0的CSS样式功能,包括CSS基本语法和常用CSS属性,以及如何自定义修改PHPWind7.0的CSS样式。 CSS基本语法 CSS(层叠样式表)是用于定义和控制HTML文档上元素的外观的语言。CS…

    css 2023年6月9日
    00
  • HTML+css制作简易进度条

    下面就是制作简易进度条的完整攻略: 1. 设计页面结构 首先,我们需要设计一下页面的结构,将网页分为两个部分,分别是容器和进度条。这里我们使用HTML语言来进行设计。代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <…

    css 2023年6月9日
    00
  • css中指定下拉列表在firefox中的宽度两种写法

    在CSS中指定下拉列表在Firefox中的宽度通常有两种写法,分别是使用”min-content”和”max-content”属性值和使用”width: -moz-fit-content”属性。 使用”min-content”和”max-content”属性值 如果您要设置下拉列表的宽度与其最长的选项的宽度相同,可以使用”min-content”属性值。同样…

    css 2023年6月10日
    00
  • CSS网页制作布局实例教程

    以下是CSS网页制作布局实例教程的完整攻略: 什么是CSS布局? CSS布局指的是网页制作中,通过CSS样式表来实现网页结构和排版的过程。定义好的CSS样式能够控制HTML元素的大小、位置、对齐和显示等属性,从而实现网页的各种布局效果。 常见的CSS布局方式 盒子模型(Box Model)布局:将网页中的每个元素看做是一个矩形的盒子,通过设置盒子的宽度、高度…

    css 2023年6月9日
    00
  • php压缩HTML函数轻松实现压缩html/js/Css及注意事项

    PHP压缩HTML函数轻松实现压缩html/js/Css及注意事项 在Web开发中,压缩html/js/Css可以减少文件大小,提升页面加载速度,提高用户体验。本文介绍如何使用PHP编写一个html/js/Css压缩函数,并且注意一些需要遵守的注意事项。 函数实现 下面是一个简单的html/js/Css压缩函数的实现: function compress_h…

    css 2023年6月13日
    00
  • 基于javascript实现样式清新图片轮播特效

    下面是“基于 JavaScript 实现样式清新图片轮播特效”的完整攻略。 概述 图片轮播特效常用于网站首页,给用户带来良好的视觉体验。本攻略将介绍如何使用 JavaScript 实现一个样式清新的图片轮播特效。 准备工作 在开始之前,需要准备以下内容: 存有图片的文件夹 一个 HTML 文件 一个 CSS 文件 一个 JavaScript 文件 实现步骤 …

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