javascript 封装的一个实用的焦点图切换效果

一、介绍

焦点图切换效果是网站开发中常见的插件之一,也是JS封装的常见应用之一。本文将介绍如何通过JS封装一个实用的焦点图切换效果。

二、实现步骤

  1. 写HTML和CSS代码。

在HTML中,我们需要写一个包含图片的容器,和几个放置小圆点的容器。在CSS中,我们可以写出容器的样式,并使用定位等属性实现图片和小圆点的位置。

  1. 写JS代码。

在JS中,我们首先要获取到操作的DOM元素,使用querySelector,getElementById等函数获取。接着,我们需要添加一些事件,比如鼠标移入图片范围时停止轮播,鼠标移出继续轮播等。

然后,我们需要实现图片切换的功能。这个功能可以通过更改container的left属性来实现。我们可以在JS中设置一个全局变量,用于保存当前图片的下标,然后通过修改left值,实现图片的切换。

最后,我们同样需要实现小圆点的切换功能。这个功能可以通过为小圆点添加类名或修改样式来实现。我们也可以使用JS动态生成小圆点并添加事件监听。

三、示例说明

  1. 焦点图切换效果示例:
<div class="container">
  <img src="img1.jpg">
  <img src="img2.jpg">
  <img src="img3.jpg">
  <img src="img4.jpg">
</div>
<div class="dots">
  <span class="active"></span>
  <span></span>
  <span></span>
  <span></span>
</div>
.container {
  position: relative;
  width: 400px;
  height: 300px;
  overflow: hidden;
}
.container img {
  position: absolute;
  top: 0;
  left: 0;
  width: 400px;
  height: 300px;
}
.dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}
.dots span {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: gray;
  margin: 0 6px;
  cursor: pointer;
}
.dots span.active {
  background-color: red;
}
const container = document.querySelector(".container");
const imgList = document.querySelectorAll(".container img");
const dots = document.querySelectorAll(".dots span");

let index = 0;
let timer;

function next() {
  index++;
  if (index === imgList.length) {
    index = 0;
  }
  change();
}

function change() {
  container.style.left = -index * 400 + "px";
  for (let i = 0; i < dots.length; i++) {
    dots[i].classList.remove("active");
  }
  dots[index].classList.add("active");
}

function play() {
  stop();
  timer = setInterval(function() {
    next();
  }, 2000);
}

function stop() {
  clearInterval(timer);
}

container.addEventListener("mouseenter", stop);
container.addEventListener("mouseleave", play);

for (let i = 0; i < dots.length; i++) {
  dots[i].addEventListener("click", function() {
    index = i;
    change();
  });
}

play();
  1. 动态生成小圆点焦点图切换效果示例:
<div class="container">
  <img src="img1.jpg">
  <img src="img2.jpg">
  <img src="img3.jpg">
  <img src="img4.jpg">
</div>
<div class="dots"></div>
.container {
  position: relative;
  width: 400px;
  height: 300px;
  overflow: hidden;
}
.container img {
  position: absolute;
  top: 0;
  left: 0;
  width: 400px;
  height: 300px;
}
.dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}
.dots span {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: gray;
  margin: 0 6px;
  cursor: pointer;
}
.dots span.active {
  background-color: red;
}
const container = document.querySelector(".container");
const imgList = document.querySelectorAll(".container img");
const dots = document.querySelector(".dots");

let index = 0;
let timer;

function next() {
  index++;
  if (index === imgList.length) {
    index = 0;
  }
  change();
}

function change() {
  container.style.left = -index * 400 + "px";
  for (let i = 0; i < dots.children.length; i++) {
    dots.children[i].classList.remove("active");
  }
  dots.children[index].classList.add("active");
}

function play() {
  stop();
  timer = setInterval(function() {
    next();
  }, 2000);
}

function stop() {
  clearInterval(timer);
}

container.addEventListener("mouseenter", stop);
container.addEventListener("mouseleave", play);

for (let i = 0; i < imgList.length; i++) {
  const span = document.createElement("span");
  dots.appendChild(span);
  span.addEventListener("click", function() {
    index = i;
    change();
  });
}

play();

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 封装的一个实用的焦点图切换效果 - Python技术站

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

相关文章

  • CSS弹性盒模型flex在布局中的应用详解

    CSS弹性盒模型flex在布局中的应用详解 什么是弹性盒模型flex 弹性盒模型(Flexible Box Layout)是一种用于页面布局的CSS3模块。它可以在不同大小的屏幕上自适应地调整布局,使得页面看起来更加美观和统一。弹性盒模型主要依靠flex容器、flex项目、方向、对齐等概念来实现布局效果。 如何定义弹性盒模型flex 在一个盒子中定义一个灵活…

    css 2023年6月10日
    00
  • 详解vue+css3做交互特效的方法

    下面我就来详细讲解一下“详解vue+css3做交互特效的方法”的完整攻略。 1. 首先安装Vue 要使用Vue进行开发,我们需要先安装Vue。可以通过npm或CDN来安装,这里我使用npm的方式来进行安装: npm install vue Vue文档中也提供了CDN的方式来安装Vue,可根据自己的需要选择。 2. 创建Vue实例 安装好Vue之后,我们就可以…

    css 2023年6月10日
    00
  • CSS3的新特性介绍

    CSS3的新特性介绍 CSS3是CSS标准中的最新版本,它带来了许多新的特性和改进,以下是CSS3的一些新特性介绍: 选择器 属性选择器 在CSS3中,新的属性选择器被引入。属性选择器可以通过元素的属性选择元素,以便更好地控制样式。新的属性选择器包括: 属性值选择器:通过元素属性的值选择元素。例如,选择所有href属性值以”.pdf”结尾的超链接: cssa…

    css 2023年6月9日
    00
  • CSS实现垂直居中的七个方法实例代码详解

    下面我将详细讲解“CSS实现垂直居中的七个方法实例代码详解”的完整攻略。 1. 居中方法概述 在网页设计中,居中是一个常见的问题。在垂直方向上,居中就常常会让人烦恼。下面列举了七种CSS实现垂直居中的方法: line-height: 实现单行文本的垂直居中 table-cell: 利用表格元素实现块元素的垂直居中 transform:translate: 利…

    css 2023年6月10日
    00
  • javascript 动态修改css样式方法汇总(四种方法)

    下面我将为你详细讲解“javascript 动态修改css样式方法汇总(四种方法)”的完整攻略。 一、前言 在开发网页的过程中,涉及到动态改变元素的样式这一需求是非常常见的。比如说,鼠标悬停在一个图片上时,让图片的边框样式变成虚线;或者是在用户输入错误的情况下,将文本框的边框颜色改为红色。而针对这样的需求,javascript 中提供了多种途径来实现动态修改…

    css 2023年6月9日
    00
  • css3 旋转按钮 使用CSS3创建一个旋转可变色按钮

    CSS3旋转按钮是一种常用的Web界面元素,它可以让用户感受到Web应用程序与其他类型的应用程序一样丰富和复杂。下面是创建CSS3旋转按钮的完整攻略,包含了关键代码和示例说明。 使用CSS3创建一个旋转可变色按钮 用HTML创建一个按钮 首先,我们需要在HTML文件中创建一个按钮元素,可以使用button或a元素,例如: <button class=&…

    css 2023年6月9日
    00
  • jQuery轮播图实例详解

    jQuery轮播图实例详解 1. 背景介绍 轮播图是一种常见的网页设计元素,用于对多张图片或内容进行滚动轮播展示。jQuery是一种常用的JavaScript库,可以方便地操作HTML文档和处理事件等,自然成为实现轮播图的常用工具之一。 本文旨在提供一个详细的jQuery轮播图实例攻略,从概念到实现,包含完整的代码和示例说明,供想学习轮播图制作的读者参考。 …

    css 2023年6月9日
    00
  • css选择器_动力节点Java学院整理

    CSS选择器_动力节点Java学院整理 一、什么是CSS选择器 CSS选择器是CSS中用于选择要应用样式的HTML元素的方式。 在CSS中,选择器是指定要应用样式的特定HTML元素的标识符。通过使用CSS选择器,您可以选择要应用样式的HTML元素,从而更改它们的外观。 二、常用的选择器类型 1.元素选择器 元素选择器会选择指定类型的所有元素。示例代码如下: …

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