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 属性选择器

    全面了解CSS属性选择器 在CSS中,可以使用属性选择器来选择具有特定属性的元素或是包含特定属性值的元素。此外,属性选择器还可以用来选择特定属性值的部分内容。 基本语法 属性选择器的基本语法为:[attribute=value],其中attribute表示属性名,value表示属性值。 例如,选取具有class属性且属性值为example的元素的选择器为: …

    css 2023年6月9日
    00
  • 使用CSS3实现选项卡切换的方法

    使用CSS3实现选项卡切换是一种常见的网页交互形式,可以为用户提供更好的页面使用体验。下面是实现选项卡切换的完整攻略: 1. HTML结构 选项卡切换的实现离不开HTML结构的设计。常见的选项卡切换结构如下: <div class="tab-container"> <div class="tab-header&…

    css 2023年6月10日
    00
  • JS+CSS实现滑动切换tab菜单效果

    JS+CSS实现滑动切换tab菜单效果的攻略: 前端HTML结构设计: 首先在HTML页面中,需要定义一个具有一定宽度的容器,用于承载tab菜单和对应的内容项。在该容器中,使用无序列表添加tab菜单项,并在li内添加标签页的名称等内容。同时,在该容器中添加对应的内容项,使用具有相同class的div元素作为内容项的容器,并在其内添加对应的标签页内容。具体的H…

    css 2023年6月10日
    00
  • JSChart轻量级图形报表工具(内置函数中文参考)

    JSChart是一款轻量级的图形报表工具,支持直线图、饼状图、柱状图等多种图表类型,并且提供了丰富的配置选项,使用户能够灵活地定制图表样式。 JSChart的安装与引用 JSChart支持直接下载文件并引入到项目中,或者使用npm进行安装。 <!– 引入JSChart文件 –> <script src="jschart.js&…

    css 2023年6月10日
    00
  • 用纯CSS实现禁止鼠标点击事件示例代码

    实现禁止鼠标点击事件可以用到CSS中的pointer-events属性,下面是详细的攻略: 设置pointer-events属性为none 要禁止鼠标点击事件,我们可以为元素设置pointer-events为none,在元素上的所有鼠标事件都将被屏蔽。示例代码如下: .disabled { pointer-events: none; } 在上述示例代码中,我…

    css 2023年6月10日
    00
  • 纯CSS3实现带动画效果导航菜单无需js

    下面是 “纯CSS3实现带动画效果导航菜单无需js” 的完整攻略: 1. 创建导航菜单结构 首先,我们需要创建导航菜单的 HTML 结构。导航菜单通常会包含一个顶部的 LOGO,若干个导航链接,和一个搜索框。示例的 HTML 结构如下: <header> <div class="logo">LOGO</div…

    css 2023年6月10日
    00
  • 标记语言——图片替换

    当我们在编写网页时,经常需要在页面中插入一些图片。这时候我们需要使用标记语言来完成图片的显示,即通过在文本中插入图片标记,让页面显示对应的图片。 1. 插入图片标记 我们可以使用标记来插入一张图片。具体格式如下: <img src="图片地址" alt="替代文本"> 其中,src属性用于指定图片地址,可以…

    css 2023年6月9日
    00
  • BOOTSTRAP时间控件显示在模态框下面的bug修复

    针对“BOOTSTRAP时间控件显示在模态框下面的bug修复”的问题,我提供以下完整攻略: 问题描述 在使用BOOTSTRAP时间控件时,当该控件被放置在模态框(Modal)中时,会出现控件被模态框遮挡,无法选取的bug。这是因为模态框Z-index值的默认设置会使得该控件表现异常。 修复步骤 要解决这个问题,我们可以通过以下步骤: 首先,需要将BOOTST…

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