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

yizhihongxing

下面是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日

相关文章

  • ionic实现滑动的三种方式

    下面就给您详细讲解「ionic实现滑动的三种方式」的攻略。 1. ion-slide ion-slide 是使用 Ionic 内置组件实现滑动效果的一种方式。它基于 Swiper 库实现,可快速创建基于滑动的交互性组件。在使用 ion-slide 组件之前,需要先引入 Swiper 库,使用以下命令进行安装: npm install swiper –sav…

    css 2023年6月10日
    00
  • VueJs与ReactJS和AngularJS的异同点

    VueJS与ReactJS和AngularJS的异同点 VueJS、ReactJS和AngularJS是三个目前比较流行的前端框架/库,它们都有各自的优点和适用场景,同时也有一些共同点和区别。 相同点 1. 都是前端框架/库 VueJS、ReactJS和AngularJS都是前端框架/库,它们的目标都是帮助开发人员更快、更方便地开发复杂的web应用。 2. …

    css 2023年6月9日
    00
  • html5/css3响应式页面开发总结

    HTML5/CSS3响应式页面开发总结 简介 HTML5/CSS3是现代Web开发中最流行的技术标准之一,而响应式页面开发则是Web设计中重要的要求之一。本文将为读者总结HTML5/CSS3下的响应式页面开发攻略。 响应式页面开发原则 响应式设计具有以下原则: 弹性网格布局 图片、媒体等流体尺寸 CSS3 Media Queries 弹性网格布局是指网页布局…

    css 2023年6月9日
    00
  • 使用css属性屏蔽鼠标事件的方法(鼠标点击可穿透上层元素)

    要屏蔽鼠标事件,常用的方法是使用CSS的pointer-events属性。这个属性控制元素是否响应用户的鼠标或手势事件。设置为none时,元素不会响应此类事件,并允许它们穿透到下面的元素,可以用来模拟类似遮罩的效果。下面是一些详细的步骤,以及两个示例说明。 步骤一:设置需要屏蔽事件的元素的CSS代码 首先,我们需要设置需要屏蔽事件的元素的CSS代码。在这个元…

    css 2023年6月9日
    00
  • css之display属性之inline-block布局实现详解

    CSS之display属性之inline-block布局实现详解 在网页布局的过程中,有时候我们需要把元素放在一行中并且保持元素间的间距,而且元素的大小不确定,这个时候使用inline-block布局可以很好的解决这个问题。 1. inline-block的基本概念 inline-block是指内联块级元素,这个属性可以让元素以块级元素的方式显示,同时保持元…

    css 2023年6月9日
    00
  • CKEditor4配置与开发详细中文说明文档

    下面是关于“CKEditor4配置与开发详细中文说明文档”的完整攻略。 1. CKEditor简介 CKEditor是一款优秀的开源的在线 WYSIWYG HTML 编辑器。 CKEditor提供了非常丰富的功能,可以快速开发Web应用中的富文本编辑器,比如博客、论坛、邮件编辑等应用场景。 2. 安装与配置 2.1 下载与安装 下载CKEditor的最新版本…

    css 2023年6月9日
    00
  • jQuery入门基础知识学习指南

    jQuery入门基础知识学习指南 什么是jQuery jQuery是一个JavaScript库,它简化了 DOM 操作、事件处理、动画效果、AJAX等很多常见任务的编写,让开发者能通过更简洁更易读的代码来完成工作。 安装jQuery 你可以通过以下方式获取并安装jQuery: 从官方网站下载jQuery文件 使用CDN方式引入jQuery 下载jQuery文…

    css 2023年6月10日
    00
  • CSS语义化命名方式及常用命名规则

    CSS语义化命名方式及常用命名规则 在CSS中,语义化命名方式是一种良好的编码习惯,它可以使代码更加易于理解和维护。本攻略将详细讲解CSS语义化命名方式及常用命名规则,包括命名方式、命名规则和示例说明。 1. 命名方式 CSS语义化命名方式通常采用BEM(Block Element Modifier)命名方式。BEM命名方式将页面分解为块(Block)、元素…

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