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日

相关文章

  • 前端浏览器字体小于12px的解决办法

    前端浏览器字体小于12px的问题是一个很常见的问题,但解决起来还是比较麻烦的。本文将介绍两种常见的解决方案。 方案一:使用transform进行缩放 使用CSS3的transform属性对文本进行缩放,缩放后浏览器的字体大小会随之变化,但不会影响到网站的整体布局。 font-size: 12px; transform: scale(0.8); 上面代码中,我…

    css 2023年6月9日
    00
  • css背景色透明 内容不透明的解决方法(兼容所有浏览器)

    为了实现 CSS 背景色透明,内容不透明的效果,可以使用以下两种方法: 方法一:使用 RGBA 颜色 注:RGBA 颜色值包含了一个额外的 alpha 值,该值可以用来实现透明度,需要注意的是,alpha 值为 0 时表示完全透明,为 1 时表示完全不透明。 示例代码: .transparent-bg { background-color: rgba(255…

    css 2023年6月9日
    00
  • 如何布局登录页面

    当布局一个登录页面时,需要考虑以下方面: 页面布局 输入框和其他表单元素的样式和交互 提交按钮和其他交互元素的样式和交互 页面布局 登录页面的布局一般是垂直居中的,这可以使用flexbox来实现。以下是一个示例代码块: body { display: flex; justify-content: center; align-items: center; he…

    css 2023年6月9日
    00
  • PHP根据传入参数合并多个JS和CSS文件的简单实现

    以下是“PHP根据传入参数合并多个JS和CSS文件的简单实现”的完整攻略: 1. 前置条件 在开始实现之前,需要先确保以下前置条件已满足: 网站已部署在PHP环境中,并且可以使用PHP的相关函数库; 需要合并的CSS和JS文件已经存在于服务器中,并且可以被脚本访问到; 网站的页面模板中使用了相应的CSS和JS文件,并且可以通过传入参数来指定需要合并的文件。 …

    css 2023年6月9日
    00
  • JavaScript原型对象原理与应用分析

    JavaScript原型对象原理与应用分析 什么是JavaScript原型对象 在JavaScript中,每个函数都有一个prototype属性,我们称之为“原型对象”。原型对象是一个普通的对象,它有自己的属性和方法。通常情况下,我们为了让某个函数变成一个构造函数,会将它的prototype属性设置为一个新对象。 例如,以下代码定义了一个构造函数Person…

    css 2023年6月9日
    00
  • BootStrap入门教程(一)之可视化布局

    《Bootstrap入门教程(一)之可视化布局》是一篇介绍Bootstrap框架基础可视化布局的入门教程。本文将详细讲解什么是Bootstrap框架以及如何使用它快速构建网站的布局,并提供两个实例说明。 Bootstrap框架简介 什么是Bootstrap? Bootstrap是一款免费、开源的前端框架,它基于HTML、CSS和JavaScript。Boot…

    css 2023年6月10日
    00
  • Vue中的transition封装组件的实现方法

    实现 Vue 中的 transition 封装组件,需要用到 Vue 的过渡系统,即 transition 组件。下面我将使用完整的 markdown 格式文本给出实现方法的攻略,包括过渡组件的用法、封装组件的方法和示例说明。 1. 过渡组件的用法 过渡组件是 Vue 提供的一个组件,用于在元素从一个状态到另一个状态之间,应用过渡效果。Vue 的过渡组件有以…

    css 2023年6月10日
    00
  • Div CSS absolute与relative的区别小结

    Div CSS absolute与relative的区别小结 什么是相对定位和绝对定位 在CSS中,相对定位和绝对定位是指定位元素在页面中位置的两种常见方法。 相对定位 相对定位使元素相对于其正常位置定位,但仍保持文档的流动性。也就是说,相对定位不会让其他元素受到定位元素的影响。 相对定位的代码为:position:relative; 绝对定位 绝对定位使元…

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