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

yizhihongxing

下面是详细讲解“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日

相关文章

  • element-ui中导航组件menu的一个属性:default-active说明

    Element UI 是一款基于 Vue 2.0 的桌面端组件库,在其中导航组件 menu 是常用的菜单导航组件之一。该组件有一个属性:default-active,本文将详细讲解该属性。 属性说明 首先,我们来看该属性的官方说明。 default-active 属性可以用来设置默认激活的菜单项,它接收一个字符串类型的 index 值,默认值为 ”。 该属…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript自定义构造函数的详解说明

    这里是关于“基于JavaScript自定义构造函数的详解说明”的完整攻略: 什么是自定义构造函数? 自定义构造函数是指由开发者自行创建的一种特殊类型的函数,这种函数被设计出来用于构造新对象。我们在使用JavaScript编程时,经常使用内置的构造函数,比如Array、String、Number、Object等。但是这些构造函数不能满足所有的需求,因为有时我们…

    JavaScript 2023年6月10日
    00
  • javascript正则表达式和字符串RegExp and String(二)

    JavaScript正则表达式和字符串RegExp and String(二) 1. RegExp 对象 RegExp 对象是 JavaScript 的内置对象,用于支持正则表达式。 1.1 RegExp 对象的创建 字面量方式: var patt = /pattern/flags; 构造函数方式: var patt = new RegExp(pattern…

    JavaScript 2023年5月28日
    00
  • js contains方法实现代码

    当我们需要在一个字符串中查找特定字符或子串时,可以使用JavaScript提供的 contains() 方法。下面是实现 contains() 方法的代码: String.prototype.contains = function(substr) { return this.indexOf(substr) !== -1; } 这里定义了一个全局方法 Stri…

    JavaScript 2023年5月28日
    00
  • js简单遍历获取对象中的属性值的方法示例

    下面是关于“JS简单遍历获取对象中的属性值的方法示例”的完整攻略: 什么是JS对象? 在JavaScript中,对象是一种复杂的数据类型,它允许开发人员存储和组织以键值对的方式描述的数据。对象通常使用大括号{}来表示,其中键和值之间使用冒号:连接。 在JS中,对象中的属性值可以是任意数据类型。 示例: var person = { name: "张…

    JavaScript 2023年5月27日
    00
  • javaWeb使用验证码实现简单登录

    JavaWeb使用验证码实现简单登录 需求 在JavaWeb网站中,为登录页面增加验证码功能,防止恶意程序暴力破解密码,提高网站的安全性。 技术栈 前端:HTML、JavaScript 后端:Java、Servlet、JSP 实现步骤 1. 引入验证码jar包 可以使用第三方的验证码生成工具库,这里以Google的kaptcha为例。 在pom.xml文件中…

    JavaScript 2023年6月10日
    00
  • JavaScript中的偏函数你理解了吗

    首先,偏函数涉及的概念有: 函数的柯里化:将接受多个参数的函数转化为接受单一参数(最初函数的第一个参数)的函数。例如,一个函数add(x,y,z),柯里化后可得到add(x)(y)(z)的格式。 偏函数:将某个函数的一部分参数固定下来,生成一个新的函数,该新函数的参数比原函数少。 在 JavaScript 中,利用柯里化的思想可以轻松实现偏函数。 下面是关于…

    JavaScript 2023年5月27日
    00
  • JavaScript递归函数定义与用法实例分析

    JavaScript递归函数定义与用法实例分析 什么是递归函数 递归函数是指在函数的定义中调用函数自身的情况,通常用来解决需要重复执行某个任务的问题。 递归函数的定义 递归函数的定义遵循如下模式: function functionName(parameters){ // 基线条件(停止条件): if (parameters == Stop){ return…

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