JavaScript代码实现图片循环滚动效果

下面是JavaScript代码实现图片循环滚动效果的完整攻略:

制作图片循环滚动效果步骤

1. HTML结构搭建

首先需要搭建包含图片的 HTML 结构,建议使用 ulli 标签,ul 标签设定一个固定的宽度,使其中的 li 标签横向排列。

<!-- HTML结构 -->
<div class="container">
  <ul class="img_list">
    <li><img src="image1.jpg" alt=""></li>
    <li><img src="image2.jpg" alt=""></li>
    <li><img src="image3.jpg" alt=""></li>
    <!-- 在此可以继续添加 li 元素 -->
  </ul>
</div>

2. CSS样式设置

接着要对 HTML 中的图片进行样式设置,让图片一排横向排列,并去掉列表的默认样式,同时将其宽度和高度都设为固定数值。并在 .container 中设置隐藏溢出的元素和悬停时停止轮播的效果。

/* CSS样式 */
.container {
  width: 500px;
  overflow: hidden;
  position: relative; /* 为了使停止轮播的按钮能绝对定位在 `.container` 内部 */
}

.img_list {
  list-style: none;
  width: 3000px; /* 此处将宽度设为所有图片宽度的和 */
  overflow: hidden;
  margin: 0 auto; /* 垂直居中 */
}

.img_list li {
  float: left; /* 确保元素在同一行内,横向排列 */
  width: 500px;
  height: 300px; /* 此处可根据实际情况设定 */
}

.stop-btn {
  position: absolute;
  bottom: 10px;
  right: 25px;
  cursor: pointer;
  /* 其它样式,例如字体大小、颜色等 */
}

3. JavaScript 实现滚动效果

最后,要加入 JavaScript 代码,通过控制图片的 left 属性来实现滚动效果。首先需要定义一个 index 计数器来保持轮播顺序,然后使用 setInterval() 方法来定时切换图片。注意,在最后一张图片轮播后,需要再次返回到第一张图片循环滚动。

// JavaScript代码
const container = document.querySelector('.container');
const imgList = document.querySelector('.img_list');
let index = 1; // 设置初始值为 1,因为第一张图片已经显示
let timer = null;

// 定时轮播函数
function play() {
  timer = setInterval(() => {
    index++;

    // 超出图片数量时,重新回到第一张图片
    if (index > 3) {
      index = 1;
    }

    const left = index * -500; // 计算对应的 `left` 属性值
    imgList.style.left = `${left}px`;
  }, 2000); // 设定切换图片时间间隔为 2000ms
}

play(); // 最开始调用一次

// 鼠标悬停到轮播图片上时停止轮播
container.addEventListener('mouseenter', () => {
  clearInterval(timer);
});

// 鼠标从轮播图片上移开时再次开始轮播
container.addEventListener('mouseleave', () => {
  play();
});

示例说明

示例一

我们想要实现每 3 秒钟轮播一次图片的效果,代码如下:

const container = document.querySelector('.container');
const imgList = document.querySelector('.img_list');
let index = 1; // 设置初始值为 1,因为第一张图片已经显示

setInterval(() => {
  index++;

  // 超出图片数量时,重新回到第一张图片
  if (index > 3) {
    index = 1;
  }

  const left = index * -500; // 计算对应的 `left` 属性值
  imgList.style.left = `${left}px`;
}, 3000); // 设定切换图片时间间隔为 3000 ms

示例二

我们考虑加入一个停止轮播的按钮,点击后轮播停止;再次点击后,轮播继续,具体代码如下:

const container = document.querySelector('.container');
const imgList = document.querySelector('.img_list');
const stopBtn = document.querySelector('.stop-btn');
let index = 1; // 设置初始值为 1,因为第一张图片已经显示
let timer = null;

// 定时轮播函数
function play() {
  timer = setInterval(() => {
    index++;

    // 超出图片数量时,重新回到第一张图片
    if (index > 3) {
      index = 1;
    }

    const left = index * -500; // 计算对应的 `left` 属性值
    imgList.style.left = `${left}px`;
  }, 2000); // 设定切换图片时间间隔为 2000ms
}

play(); // 最开始调用一次

// 点击按钮停止轮播
stopBtn.addEventListener('click', () => {
  if (stopBtn.innerHTML === '停止轮播') {
    clearInterval(timer);
    stopBtn.innerHTML = '继续轮播';
  } else {
    play(); // 继续轮播
    stopBtn.innerHTML = '停止轮播';
  }
});

// 鼠标悬停到轮播图片上时停止轮播
container.addEventListener('mouseenter', () => {
  clearInterval(timer);
});

// 鼠标从轮播图片上移开时再次开始轮播
container.addEventListener('mouseleave', () => {
  play();
});

到此为止,完整的JavaScript代码实现了图片循环滚动效果,并且还加入了停止轮播的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript代码实现图片循环滚动效果 - Python技术站

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

相关文章

  • SpringMVC 使用JSR-303进行校验 @Valid示例

    关于SpringMVC使用JSR-303进行校验,下面给出完整攻略: 1. 什么是JSR-303校验框架 JSR-303是Java EE 6规范中的一项内容,它定义了一套校验框架,可以让我们在JavaBean的属性上添加一些注解来描述这些属性的约束条件,然后再通过调用校验框架提供的API进行校验,从而保证JavaBean中属性的合法性。 2. 在Spring…

    css 2023年6月10日
    00
  • 详解HTML5 Canvas绘制时指定颜色与透明度的方法

    HTML5 Canvas是一个在网页中绘制图形的HTML元素,它提供了非常丰富的绘图功能。在绘制时,我们需要指定绘制的颜色和透明度,这样我们才能达到想要的效果。下面将详细介绍指定颜色与透明度的方法。 指定颜色 在Canvas中,我们可以使用以下方法来指定颜色: fillStyle fillStyle属性用于设置填充颜色,它可以是一个CSS颜色值,也可以是一个…

    css 2023年6月9日
    00
  • 实例详解Vue项目使用eslint + prettier规范代码风格

    现在我将为您详细讲解如何使用eslint + prettier规范Vue项目的代码风格。 配置eslint和prettier 第一步,我们需要配置eslint和prettier的环境。您可以在Vue项目中使用以下命令进行安装: npm install –save-dev eslint prettier eslint-plugin-prettier esli…

    css 2023年6月10日
    00
  • AngularJS HTML编译器介绍

    AngularJS HTML编译器介绍 在AngularJS中,HTML编译器是一个非常重要的组成部分,它负责将包含AngularJS表达式的HTML模板转换成可执行的JavaScript代码并展示在浏览器上。下面将详细讲解AngularJS HTML编译器的工作原理和使用方法。 工作原理 AngularJS HTML编译器工作的基本原理是:将HTML DO…

    css 2023年6月9日
    00
  • AJAX实现瀑布流布局

    下面我将提供关于“AJAX实现瀑布流布局”的完整攻略,包含以下几个步骤: 步骤1:了解瀑布流布局 瀑布流布局是一种流式布局方式,在页面中按照列来展示数据。该布局的特点是: 每一列宽度相同,高度不同; 每一列数据按照从上到下,从左到右的顺序依次排列; 数据加载时通过 AJAX 异步请求,实现数据的无限滚动加载。 步骤2:布局HTML和CSS 在HTML中,我们…

    css 2023年6月11日
    00
  • 使用Div+CSS纯图片实现圆角矩形的方法小结

    对于该主题,“使用Div+CSS纯图片实现圆角矩形的方法小结”,我们需要分几个方面进行讲解: 理解圆角矩形的原理,确定页面需求; 基于需求,使用CSS设置对应的样式; 利用CSS Sprites技术实现纯图片圆角矩形; 在实际运用中优化处理。 下面就具体的讲一下。 圆角矩形的原理 圆角矩形是指矩形的四个边角被设计成圆弧的一种界面效果。实现圆角矩形的方法非常多…

    css 2023年6月10日
    00
  • html 内联元素和html 块级元素概述及区别

    HTML元素分为两种类型:内联元素和块级元素。 HTML内联元素 HTML内联元素(Inline Element)是指元素在页面中以行内的方式显示,并且只占用必要的宽度。常见的内联元素有:<a>、<span>、<img>、<i>等。 区别: 内联元素不会造成文本换行,而是在一行内按照从左到右的顺序依次展示。而块…

    css 2023年6月9日
    00
  • 利用CSS3在Angular中实现动画

    下面是详细的攻略: 利用CSS3在Angular中实现动画 1. 前置条件 在开始利用CSS3在Angular中实现动画之前,需要确保以下工具和技术已经具备: Angular的基本概念和使用方法 CSS3动画的基本知识和使用方法 2. 新建Angular应用 首先,我们需要新建一个Angular应用。可以使用Angular CLI来快速生成一个基础项目: n…

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