JS原生实现轮播图的几种方法

JS原生实现轮播图的几种方法

一、通过操作DOM方式实现轮播图

1.1 思路

通过JS操作DOM的方式,在HTML中添加图片的容器,然后在JS中动态地改变图片的位置和透明度

1.2 示例

HTML结构:

<div class="slider">
  <img src="1.jpg" alt="">
  <img src="2.jpg" alt="">
  <img src="3.jpg" alt="">
  <img src="4.jpg" alt="">
</div>

CSS样式:

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

.slider img {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  z-index: 1;
  transition: all 1s ease-in-out;
}

.slider img.active {
  opacity: 1;
  z-index: 2;
}

JS代码:

var imgList = document.querySelectorAll('.slider img');
var current = 0;

function play() {
  // 隐藏当前图片
  imgList[current].classList.remove('active');
  // 显示下一张图片
  current = (current + 1) % imgList.length;
  imgList[current].classList.add('active');
}

// 每隔2秒自动播放
setInterval(play, 2000);

二、通过Canvas方式实现轮播图

2.1 思路

使用Canvas画布,在画布上绘制图片,然后通过改变图片的位置和透明度实现轮播效果

2.2 示例

HTML结构:

<canvas id="canvas" width="500" height="300"></canvas>

JS代码:

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var imgList = ['1.jpg', '2.jpg', '3.jpg', '4.jpg'];
var current = 0;

function play() {
  // 清空画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  // 显示下一张图片
  var img = new Image();
  img.src = imgList[current];
  img.onload = function() {
    ctx.globalAlpha = 1;
    var x = (canvas.width - img.width) / 2;
    var y = (canvas.height - img.height) / 2;
    ctx.drawImage(img, x, y);
    // 图片逐渐淡出
    fadeOut();
  };
  // 更新当前图片索引
  current = (current + 1) % imgList.length;
}

function fadeOut() {
  var alpha = 1;
  // 每隔10毫秒逐渐减小图片透明度
  var timer = setInterval(function() {
    alpha -= 0.01;
    ctx.globalAlpha = alpha;
    // 如果透明度小于等于0,则停止定时器
    if (alpha <= 0) {
      clearInterval(timer);
      play();
    }
  }, 10);
}

// 自动播放
play();

以上是JS原生实现轮播图的两种常见方式,其他实现方式还包括使用CSS3的动画、使用第三方轮播插件等,可以根据实际需求来选择合适的方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS原生实现轮播图的几种方法 - Python技术站

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

相关文章

  • 使用CSS3的appearance属性改变任何元素的浏览器默认风格

    使用CSS3的appearance属性可以改变任何元素的浏览器默认风格。这个属性可以用来修改一些标准控件的样式,或者改变一些HTML元素的默认外观,从而打造独特的用户体验。 修改标准控件的样式 如果想要修改标准控件的样式,可以使用appearance属性。下面以修改按钮的样式为例: button { appearance: none; background-…

    css 2023年6月10日
    00
  • jquery实现点击页面回到顶部

    1.首先,需要引入jquery库文件,可以使用cdn或者下载本地文件进行引入。在html文档中增加以下代码: <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script> 2.增加回到顶部的按钮。在html文档中放置一个…

    css 2023年6月10日
    00
  • 提高代码可读性的十大注释技巧分享

    提高代码可读性是一项非常重要的工作,注释是其中的关键步骤。在这里我会分享十大注释技巧,帮助你提高代码的可读性。 1. 代码块注释 一般情况下,注释应该放在代码块的上方。它们应该被紧密地排列在一起,与其他代码相隔一行。这是一个好的做法,因为代码变化后注释不会随之漂移,也为编写者提供了改动区域的视觉提示。例如: # 这是一个函数的注释 def my_functi…

    css 2023年6月9日
    00
  • 如何利用vw+rem进行移动端布局

    利用vw+rem进行移动端布局,可以实现网页在不同设备上的自适应布局,使得页面在任何尺寸的屏幕上都能够完美展示。下面是利用vw+rem进行移动端布局的详细攻略: 1. 使用视窗单位 视窗单位有两种:vw 和 vh。它们的意思是 viewport width 和 viewport height。1vw 等于视窗宽度的 1%,1vh 等于视窗高度的 1%。在这里…

    css 2023年6月9日
    00
  • CSS 文本域和按钮对齐不一致解决方案

    下面是 “CSS 文本域和按钮对齐不一致解决方案”的完整攻略: 问题描述 当我们在HTML表单中设置一个textarea(文本域)和一个button(按钮)时,有时候会发现它们在水平方向上的对齐不一致。这是因为textarea和button的默认盒模型不同,导致其宽度和高度的计算方式不同。 解决方案 有以下两种解决方案: 方案一:使用CSS的table布局 …

    css 2023年6月10日
    00
  • 在浏览器中解析”赋予margin属性”的checkbox空白边距(IE6和FF)

    在浏览器中解析“赋予margin属性”的checkbox空白边距,实际上是指针对 HTML 表单元素 checkbox 加入 margin 属性时,会出现空白边距的问题。具体攻略如下: 1. 问题分析 首先需要分析问题所在。在 PC 端的 IE6 和 FF 浏览器中,如果为 HTML 表单元素 checkbox 设置了 margin 属性,会出现空白边距。这…

    css 2023年6月9日
    00
  • DIV+CSS经常用到的属性、参数及说明

    下面给您讲一下DIV+CSS经常用到的属性、参数及说明的攻略。 一、CSS常用属性 1.1 文本相关属性 1.1.1 font属性 font属性用来设置文本的字体、大小、行高、颜色等,常用的设置方式为: font: italic small-caps bold 20px/2 cursive; 上述代码中,设置了文本为斜体、小型小写大写字母、粗体、字体大小为2…

    css 2023年6月9日
    00
  • 背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)

    以下是关于“背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)”的攻略: 1.使用CSS3的RGBA属性 使用CSS3的RGBA属性可以非常方便地设置背景颜色的透明度。RGBA属性由红、绿、蓝三个色值和一个透明度值组成,它们的取值范围均是0-255,透明度值则是0-1之间的小数,如下所示: background-color: rgba(0,0…

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