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

yizhihongxing

一、介绍

焦点图切换效果是网站开发中常见的插件之一,也是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日

相关文章

  • JS+css 图片自动缩放自适应大小

    想要实现图片的自动缩放和自适应大小,我们可以借助JavaScript和CSS技术来实现。以下是具体的攻略: 1.通过CSS设置图片的最大宽度和高度,使得图片能够适应不同的屏幕尺寸,并保持其长宽比不变: img { max-width: 100%; max-height: 100%; } 2.借助JavaScript技术,在图片加载完成之后对图片进行大小的计算…

    css 2023年6月10日
    00
  • CSS滤镜实现的颜色渐变翻转效果

    你好,下面是“CSS滤镜实现的颜色渐变翻转效果”的完整攻略。 概述 “CSS滤镜实现的颜色渐变翻转效果”是一种实现在鼠标悬停时,元素的颜色会发生渐变且翻转的效果,这种效果可以用CSS的滤镜属性来实现。本攻略将介绍如何利用CSS滤镜属性来实现颜色渐变翻转效果。 步骤 第一步:制作需要翻转的元素 这个步骤很简单,我们可以用一个div元素来制作需要翻转的元素。例如…

    css 2023年6月9日
    00
  • vue实现拖拽小图标

    Vue实现拖拽小图标的过程可以分为以下几步: 在Vue组件中,引入需要拖拽的小图标的组件,并给组件绑定拖拽开始、拖拽结束、拖拽过程中的事件处理函数。具体代码如下: <template> <div> <draggable-item @dragstart="onDragStart" @dragend="…

    css 2023年6月10日
    00
  • @Font-face的基本用法及让全部浏览器都兼容的方法

    下面我来详细讲解一下“@Font-face的基本用法及让全部浏览器都兼容的方法”。 1. @font-face的基本用法 @font-face是CSS3新增的一个规则,可以让我们在Web中使用自定义字体。它的基本用法如下: @font-face { font-family: ‘MyFont’; /* 自定义字体名称 */ src: url(‘myfont.w…

    css 2023年6月10日
    00
  • CSS background全部汇总

    CSS background全部汇总 概述 CSS中的background属性用于设置HTML元素的背景,包括颜色、图片、位置、重复性、尺寸、是否固定等等。它是一个非常重要的属性,不仅可以设置多种效果,而且可以提高网站的美观度和用户体验。 基本语法 background属性可以写在一个指定样式表(CSS)中,也可以作为一个内联样式写在HTML标签元素中。 具…

    css 2023年6月9日
    00
  • 收集的22款给力的HTML5和CSS3帮助工具

    收集的22款给力的HTML5和CSS3帮助工具 HTML5和CSS3是现代网页设计的基础,随着这两种技术的不断推进,越来越多的优秀工具被开发出来,极大地促进了网页设计的发展。本文将介绍收集的22款HTML5和CSS3帮助工具,包括其特点、使用方法和示例说明。 工具列表 Canva:一个允许用户在不需要任何设计经验的情况下,快速地创建漂亮设计作品的在线平台。 …

    css 2023年6月9日
    00
  • 详解CSS(层叠样式表)渐进增强

    CSS(层叠样式表)是一种用于描述网页样式的语言,可以用于控制网页的布局、颜色、字体等方面。渐进增强是一种设计理念,即在设计网页时,应该先考虑基本功能的实现,然后再逐步增加高级功能。以下是关于详解CSS(层叠样式表)渐进增强的完整攻略。 步骤一:基本样式 首先,需要定义网页的基本样式,包括布局、颜色、字体等方面。以下是一个示例: body { font-fa…

    css 2023年5月18日
    00
  • CSS教程:text-indent隐藏文字出现虚线框outline

    以下是关于“CSS教程:text-indent隐藏文字出现虚线框outline”的完整攻略: 1. 什么是text-indent及outline? 在CSS中,text-indent用于控制文本第一行的缩进,outline用于给指定元素添加边框。也就是说,如果文本的第一行被设置了缩进,并且当文本内容超出了元素框时,浏览器会自动添加虚线框。 2. 如何使用te…

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