javascript实现图片左右滚动效果【可自动滚动,有左右按钮】

下面是详细讲解“javascript实现图片左右滚动效果【可自动滚动,有左右按钮】”的完整攻略:

1. 确定HTML结构

首先需要确定HTML结构,一般来说,我们可以使用 ulli 标签来实现一个图片轮播图。如下所示:

<div class="container">
  <ul class="img-list">
    <li><img src="image1.png"></li>
    <li><img src="image2.png"></li>
    <li><img src="image3.png"></li>
    <li><img src="image4.png"></li>
  </ul>
</div>

其中 img-list 用于包裹图片列表,容器 container 用于设置图片的宽度和高度,使图片可以在容器内部滚动。

2. 添加CSS样式

接下来,我们需要添加CSS样式,样式可以控制图片的大小、间距等。如下所示:

.container {
  width: 800px;
  height: 400px;
  overflow: hidden;
  position: relative;
}

.img-list {
  list-style: none;
  margin: 0;
  padding: 0;
  position: absolute;
  width: 3200px;
}

.img-list li {
  float: left;
  width: 800px;
  height: 400px;
}

其中,容器 container 设置了宽度为800px,高度为400px,并添加了overflow: hidden;以隐藏溢出的图片。列表 img-list 设置了宽度为3200px,即4张图片的宽度之和。每张图片的宽度为800px,高度为400px。你也可以设置每张图片之间的间距,这里我们暂不介绍。

3. 编写JavaScript代码

接下来,我们来编写JavaScript代码来实现自动滚动和左右按钮的功能。

要实现自动滚动,我们可以使用 setInterval() 函数。该函数可以设置滚动间隔,以便滚动到下一张图片。如下所示:

var imgList = document.querySelector('.img-list');
var imgWidth = document.querySelector('.img-list li').offsetWidth; 
//获取每张图片的宽度
var currentIndex = 0; //设置当前索引值

setInterval(function(){
  //每隔3秒钟,滚动到下一张图片
  currentIndex++;
  if(currentIndex < 4){
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    currentIndex = 0;
    imgList.style.left = 0;
  }
}, 3000); //滚动间隔为3秒钟

上面的代码设置了滚动间隔为3秒钟,每次滚动到下一张图片。当滚动到最后一张图片时,将自动滚动到第一张图片。

要实现左右按钮功能,我们可以使用两个按钮,一个向左滚动,一个向右滚动。如下所示:

//获取左右按钮
var prevBtn = document.querySelector('.prev');
var nextBtn = document.querySelector('.next');

prevBtn.addEventListener('click', function(){
  //向左滚动
  currentIndex--;
  if(currentIndex < 0){
    currentIndex = 3;
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }
});

nextBtn.addEventListener('click', function(){
  //向右滚动
  currentIndex++;
  if(currentIndex < 4){
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    currentIndex = 0;
    imgList.style.left = 0;
  }
});

该代码设置了左右两个按钮,分别为 prevnext 。当用户点击左按钮时,当前索引值将减去1,向左滚动一张图片。当滚动到最后一张图片时,将自动滚动到第一张图片。当用户点击右按钮时,当前索引值将加上1,向右滚动一张图片。同样,当滚动到最后一张图片时,将自动滚动到第一张图片。

4. 完整的JavaScript代码

接下来,给出完整的JavaScript代码:

var imgList = document.querySelector('.img-list');
var imgWidth = document.querySelector('.img-list li').offsetWidth; 
//获取每张图片的宽度
var currentIndex = 0; //设置当前索引值
var prevBtn = document.querySelector('.prev');
var nextBtn = document.querySelector('.next');

setInterval(function(){
  //每隔3秒钟,滚动到下一张图片
  currentIndex++;
  if(currentIndex < 4){
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    currentIndex = 0;
    imgList.style.left = 0;
  }
}, 3000); //滚动间隔为3秒钟

prevBtn.addEventListener('click', function(){
  //向左滚动
  currentIndex--;
  if(currentIndex < 0){
    currentIndex = 3;
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }
});

nextBtn.addEventListener('click', function(){
  //向右滚动
  currentIndex++;
  if(currentIndex < 4){
    imgList.style.left = -currentIndex * imgWidth + 'px';
  }else{
    currentIndex = 0;
    imgList.style.left = 0;
  }
});

5. 示例说明

接下来,给出两条示例说明:

示例一:

首先,我们需要复制上面的HTML代码和CSS代码,并放置到网页上。接下来,将上面的JavaScript代码复制到控制台中,按回车键执行即可。

示例二:

另外,我们还可以使用jQuery来实现该效果。如下所示:

var currentIndex = 0; //设置当前索引值
var imgWidth = $('.img-list li img').width();//获取每张图片的宽度
var imgNumber = $(".img-list li").length; //获取图片的数量
var imgListWidth = imgWidth * imgNumber; //计算图片列表的总宽度
$('.img-list').css('width', imgListWidth + 'px');

setInterval(function(){
  //每隔3秒钟,滚动到下一张图片
  currentIndex++;
  if(currentIndex < imgNumber){
    $('.img-list').animate({
      left: -currentIndex * imgWidth + 'px'
    }, 500);
  }else{
    currentIndex = 0;
    $('.img-list').animate({
      left: 0
    }, 500);
  }
}, 3000); //滚动间隔为3秒钟

$('.prev').click(function(){
  //向左滚动
  currentIndex--;
  if(currentIndex < 0){
    currentIndex = imgNumber - 1;
    $('.img-list').animate({
      left: -currentIndex * imgWidth + 'px'
    }, 500);
  }else{
    $('.img-list').animate({
      left: -currentIndex * imgWidth + 'px'
    }, 500);
  }
});

$('.next').click(function(){
  //向右滚动
  currentIndex++;
  if(currentIndex < imgNumber){
    $('.img-list').animate({
      left: -currentIndex * imgWidth + 'px'
    }, 500);
  }else{
    currentIndex = 0;
    $('.img-list').animate({
      left: 0
    }, 500);
  }
});

该代码使用了jQuery库来实现,该库可以使我们的JavaScript代码更加简洁。具体实现方法和上面的方法类似,唯一的区别是使用了jQuery的动画效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现图片左右滚动效果【可自动滚动,有左右按钮】 - Python技术站

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

相关文章

  • JavaScript必知必会(九)function 说起 闭包问题

    下面是我对“JavaScript必知必会(九)function 说起 闭包问题”的完整攻略。 什么是闭包 闭包是指函数和函数所能访问的外部变量之间的关系。可以理解为,一个函数能够“记住”在它被定义时所处的环境。 一个闭包的形成,需要满足以下条件: 函数嵌套:在一个函数内定义了另一个函数。 内层函数使用了外部变量:内层函数使用了外部函数所定义的变量。 外部函数…

    JavaScript 2023年6月10日
    00
  • 整理Javascript数组学习笔记

    下面是针对“整理JavaScript数组学习笔记”的攻略: 1. 了解JavaScript数组基础知识 JavaScript数组是一种用于存储多个值的有序集合。数组是一种特殊的变量类型,使用方括号([ ])来表示。在数组中的每个元素都有一个唯一的索引。数组的索引通常从0开始,第一个元素的索引为0. 示例1:如何创建一个数组 var fruits = [‘Ap…

    JavaScript 2023年5月27日
    00
  • js中prototype用法详细介绍

    “js中prototype用法详细介绍”的攻略如下: 1. 什么是prototype 在javascript中,每个对象有一个特殊的属性__proto__,指向其构造函数的原型对象(prototype)。原型对象中存储着对象的方法和属性。使用原型机制,可以使所有对象共享相同的属性和方法,而不必为每个对象创建副本。 2. 为什么需要prototype 在jav…

    JavaScript 2023年6月10日
    00
  • vue element动态渲染、移除表单并添加验证的实现

    下面我会详细讲解“vue element动态渲染、移除表单并添加验证的实现”的完整攻略。 在vue element中实现动态渲染、移除表单并添加验证的步骤如下: 第一步:引入element-ui组件库和相关模块 在vue项目中,我们首先需要引入element-ui组件库和相关模块以使用其中的表单组件和表单验证功能。 <template> <…

    JavaScript 2023年6月10日
    00
  • python 定时器每天就执行一次的实现代码

    Python中实现定时器每天只执行一次的功能,可以使用标准库中的datetime和time模块。下面是完整的攻略: 1.首先导入需要的库 import datetime import time 2.获取当前时间 now = datetime.datetime.now() 3.计算当前时间到第二天凌晨的时间差 tomorrow = now + datetime…

    JavaScript 2023年6月11日
    00
  • Area 区域实现post提交数据的js写法

    Area 区域是HTML表单元素的一种。它允许在一个可编辑的区域内输入文本或代码。使用JavaScript,我们可以使用它来实现提交数据的功能,这些数据可以使用POST方法发送到服务器。 以下是实现Area 区域Post提交数据的基本步骤: 创建一个表单元素,其中包含一个Area 区域,指定一个ID用于JavaScript操作。 <form> &…

    JavaScript 2023年6月11日
    00
  • js面向对象编程OOP及函数式编程FP区别

    一、OOP与FP概述 OOP(Object-oriented Programming)即面向对象编程,是一种编程范式,通过抽象出类来描述对象及其行为,并通过类的继承将代码组织成复杂的对象体系结构,从而使代码更加易于维护与扩展。 FP(Functional Programming)即函数式编程,是一种编程范式,重点在于函数,它将计算过程视为一系列的函数求值,通…

    JavaScript 2023年5月27日
    00
  • JavaScript中的遍历详解(多种遍历)

    JavaScript中的遍历详解(多种遍历) 在JavaScript中,遍历是一种非常重要的操作。遍历可以帮助我们处理数组、对象、Map等数据结构。JavaScript提供了多种遍历方式,每个方式都有其特点和适用场景。在本文中,我们将详细讨论JavaScript中的遍历方式。 for循环 for循环是JavaScript中最基本的遍历方式。它适用于对数组、字…

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