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日

相关文章

  • CodeIgniter生成网站sitemap地图的方法

    下面是详细的“CodeIgniter生成网站sitemap地图的方法”的攻略过程。 什么是网站sitemap地图? 网站Sitemap,又称为XML Sitemap,是一种文件格式,用于告知搜索引擎关于网站上所有页面的信息。Sitemap 可以显示站点中哪些页面有多重关系和哪些页面之间的相对优先级。 CodeIgniter生成网站Sitemap地图的方法 在…

    css 2023年6月10日
    00
  • CSS Web安全字体组合详解

    CSS Web安全字体组合详解 什么是Web安全字体? Web安全字体是指在绝大多数计算机操作系统(Windows、Mac OS、Linux等)上均已预装的一组字体,网页设计者可以通过 CSS 指定这些字体名称来保证文字在不同操作系统下的正确显示。Web安全字体一般包括以下几款: Arial Arial Black Comic Sans MS Courier…

    css 2023年6月9日
    00
  • javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等

    获取和判断浏览器窗口、屏幕、网页的高度、宽度等是前端开发基础中非常重要的知识点,在网站开发中常常会使用到。JavaScript提供了多种方式来获取这些值,下面是这些方法的详细讲解: 获取浏览器窗口的高度和宽度 获取浏览器窗口的高度和宽度可以使用window.innerHeight和window.innerWidth这两个属性来实现,代码如下: console…

    css 2023年6月10日
    00
  • 网页中图片应用CSS的滤镜的效果

    网页中图片应用 CSS 的滤镜效果是一种常见的网页美化技术,它可以通过添加 CSS 的滤镜样式来改变图片的展示效果,比如调整图片的色相、饱和度、亮度、对比度等。 下面是应用 CSS 的滤镜效果的完整攻略: 步骤1:准备图片素材 首先,需要准备一张需要应用滤镜效果的图片素材。可以从网络素材库、自己的照片库中选择合适的图片素材。 步骤2:创建网页和导入图片 接着…

    css 2023年6月9日
    00
  • CSS实现梯形标签页的方法

    CSS实现梯形标签页的方法,可以通过以下步骤实现。 1. 确定页面布局 在 HTML 页面中,我们需要确定标签页所在的位置和布局。可以在一个容器中放置多个标签页,每个标签页对应一个内容区域。在本示例中,容器为 <div class=”tab-container”>,而标签页则是由 <div class=”tab”> 元素和 <d…

    css 2023年6月9日
    00
  • React useCallback钩子的作用方法demo

    React的useCallback钩子是一个用于优化性能的Hooks。其作用是缓存一个函数引用,以便可以在渲染周期之间复用该函数。 使用方法 useCallback接受两个参数: 一个需要缓存的函数 一个依赖项数组 当依赖项改变时,useCallback返回的缓存函数才会被重新计算。 示范1:使用useCallback优化子组件的渲染 在下面的示例中,我们将…

    css 2023年6月10日
    00
  • Illustator制作网页超酷的长阴影效果 两种AI制作方法介绍

    让我详细为您讲解一下 “Illustrator制作网页超酷的长阴影效果 两种AI制作方法介绍”的完整攻略。 1. 简介 长阴影效果是一种流行的网页设计技巧,可以使网页元素在平面感中增加层次感和深度感。本文将介绍两种使用Illustrator 制作长阴影效果的方法。 2. 利用渐变工具制作长阴影效果 实现步骤 打开Illustrator,创建一个新的文档,选择…

    css 2023年6月9日
    00
  • js淡入淡出焦点图幻灯片效果代码分享

    请允许我详细讲解一下如何实现JavaScript淡入淡出焦点图幻灯片效果。 准备工作 首先,我们需要准备好HTML、CSS和JavaScript文件,并通过HTML文件引入JavaScript文件。此外,我们还需要在HTML中添加包含幻灯片图片的容器元素。 示例代码: <!DOCTYPE html> <html> <head&g…

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