用html+css+js实现的一个简单的图片切换特效

实现一个简单的图片切换特效,可以使用 HTML、CSS 和 JavaScript。

整个过程可以分为以下几个步骤:

  1. 构建 HTML 结构
  2. 样式布局
  3. 实现图片切换效果

具体实现流程:

  1. 构建 HTML 结构
<div class="slider">
  <img src="img1.jpg" alt="图片1">
  <img src="img2.jpg" alt="图片2">
  <img src="img3.jpg" alt="图片3">
</div>

<div class="controls">
  <span data-index="1"></span>
  <span data-index="2"></span>
  <span data-index="3"></span>
</div>

我们需要一个容器,用于显示图片,此处使用一个 div 元素,并添加一个类名 slider。然后,插入图片元素 img,设置其 src 属性(对应图片文件的路径),并添加 alt 属性,用于辅助阅读和 SEO 的目的。

同时,我们还需要一个控制器,用于切换图片,此处使用一个 div 元素,并添加一个类名 controls。然后,插入几个 span 元素,分别用于切换到不同的图片,通过 data-index 属性来标识该 span 元素对应的图片的索引值。

  1. 样式布局

样式布局可以用 CSS 来调整,主要是对 .slider 和 .controls 的样式进行设置。

.slider {
  position: relative;
  overflow: hidden;
  width: 500px;
  height: 350px;
}

.slider img {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  transition: opacity .5s ease-in-out;
}

.slider img.active {
  opacity: 1;
}

.controls {
  margin-top: 10px;
}

.controls span {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 5px;
  border-radius: 50%;
  background-color: #ccc;
  cursor: pointer;
}

.controls span.active {
  background-color: #000;
}

对于 .slider 容器,将其设置为相对定位,设置宽度和高度来指定容器的大小。图片元素 img 需要使用绝对定位,并移动到容器的左上角(top:0;left:0),同时将其 opacity 属性设置为 0,以便在初始化时隐藏图片。

同时,为了让图片切换更加平滑,我们还需要设置过渡效果,并在切换时通过为目标图片添加类名 .active,同时移除当前图片的该类名,来让图片逐渐显示出来。

控制器 .controls 上设置了 margin-top 属性,用于将其与图片容器隔离开来。每个 span 元素需要使用 display:inline-block; 设置为行内块元素,并设置其宽度、高度、边距、圆角和背景颜色等样式,为其添加一个 cursor: pointer; 样式,以让用户鼠标悬停时鼠标指针变为手型。

  1. 实现图片切换效果

要实现图片切换效果,我们需要使用 JavaScript 来监听控制器的点击事件,并根据点击 span 元素的 data-index 属性来切换图片。

const images = document.querySelectorAll(".slider img");
const controls = document.querySelectorAll(".controls span");

let currentIndex = 0;

function setActiveImage(index) {
  images[currentIndex].classList.remove("active");
  images[index].classList.add("active");
  currentIndex = index;
}

controls.forEach(function (control) {
  control.addEventListener("click", function () {
    const index = this.getAttribute("data-index");
    setActiveImage(index - 1);
  });
});

首先,获取到 .slider 和 .controls 各自的元素集合,并将 currentIndex 设置为 0,作为初始值。然后,定义 setActiveImage 函数,用于将指定的图片(根据 index)设置为当前显示的图片,并将其对应的 span 元素设置为 active 状态。

最后,遍历所有的控制器 span 元素,为其添加 click 事件监听器。当用户单击某个控制器时,从该元素的 data-index 属性中获取到要显示的图片的索引值,然后调用 setActiveImage 函数来切换到目标图片。

示例1:

<!DOCTYPE html>
<html lang="zh-cn">

<head>
  <meta charset="UTF-8">
  <title>图片切换特效</title>
  <style>
    /* CSS 样式和 HTML 结构略 */
  </style>
</head>

<body>
  <div class="slider">
    <img src="img1.jpg" alt="图片1">
    <img src="img2.jpg" alt="图片2">
    <img src="img3.jpg" alt="图片3">
  </div>

  <div class="controls">
    <span data-index="1" class="active"></span>
    <span data-index="2"></span>
    <span data-index="3"></span>
  </div>

  <script>
    // JavaScript 代码略
  </script>
</body>

</html>

这个示例中指定了一个控制器默认为激活状态,使得在页面最开始加载时即会显示第一张图片。

示例2:

<!DOCTYPE html>
<html lang="zh-cn">

<head>
  <meta charset="UTF-8">
  <title>图片切换特效</title>
  <style>
    /* CSS 样式和 HTML 结构略 */
  </style>
</head>

<body>
  <div class="slider">
    <img src="img1.jpg" alt="图片1">
    <img src="img2.jpg" alt="图片2">
    <img src="img3.jpg" alt="图片3">
  </div>

  <div class="controls">
    <span data-index="1"></span>
    <span data-index="2" class="active"></span>
    <span data-index="3"></span>
  </div>

  <script>
    // JavaScript 代码略
  </script>
</body>

</html>

这个示例中,以第二张图片为默认展示图片,不同于示例1,这里并不用添加图片所在 span 元素的 active 类,每次重新切换展示的时候,active 类都会重新设置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用html+css+js实现的一个简单的图片切换特效 - Python技术站

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

相关文章

  • CSS中使用clearfix清除浮动的方法

    在CSS中,float属性可以使元素脱离文档流并浮动在页面中。当浮动元素比包含其的容器短时,容器的高度会发生塌陷。而clearfix是一种常用的清除浮动方法,可以避免这种情况的发生。 什么是clearfix clearfix是一种清除浮动的方法,其实现方式是在浮动元素的上方和下方插入空元素,并对空元素设置特定的CSS样式。 示例代码 .clearfix:af…

    css 2023年6月10日
    00
  • css 透明边框background-clip妙用

    下面是关于“CSS透明边框background-clip妙用”的详细攻略: 1. 什么是background-clip属性 background-clip 属性控制背景的显示区域,可以取多种值:border-box、padding-box、content-box 和 text,指定不同的区域展现背景图或颜色。具体解释如下: border-box:背景延伸到边…

    css 2023年6月9日
    00
  • 纯html+css实现奥运五环的示例代码

    下面是详细讲解“纯html+css实现奥运五环的示例代码”的完整攻略: 设计思路 为了实现五环,需要先把它们的几何形状考虑清楚。五环都可以用简单的线段来描述,然后填充对应的颜色。我们可以使用<div>元素来代表每个环,然后设置对应的样式来实现填充色。在样式中,使用border-radius属性来绘制圆弧边框,使五环看起来更协调。另外,为了让五环居…

    css 2023年6月9日
    00
  • 玩转jQuery按钮 请告诉我你最喜欢哪些?

    玩转jQuery按钮 当我们开发网站或者应用的时候,按钮是经常使用的UI元素,有时候一个好看而又有趣的按钮能够让用户印象深刻。而使用jQuery可以让我们在按钮方面更加灵活地运用。 常见的jQuery按钮 在jQuery中,有一些常见的按钮样式和功能,包括按钮的hover、active效果、按钮的禁用、表单提交等。 悬停按钮 悬停按钮是一种常见的UI元素,可…

    css 2023年6月10日
    00
  • ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)

    一、ZeroClipboard插件介绍 ZeroClipboard是一个开源的javascript库,用于实现将文本复制到用户的剪贴板中。它支持多种浏览器,包括chrome、firefox、safari、IE6等。在ZeroClipboard之前,要想将文本复制到剪贴板中需要使用ActiveX等非标准技术,很难实现跨浏览器的兼容。通过ZeroClipboar…

    css 2023年6月10日
    00
  • css样式实现整个页面背景使用一张图片

    当我们需要让整个页面的背景使用一张图片时,可以通过CSS样式来实现,具体步骤如下: 创建一个包含背景图片的CSS样式 将下面的代码复制到样式表中,将”background-image”属性的值改为你想要使用的图片路径。 body { background-image: url(‘path/to/background-image.jpg’); backgrou…

    css 2023年6月9日
    00
  • Dreamweaver经典问题45条

    首先,我们需要明确,“Dreamweaver经典问题45条”是一个常见的Dreamweaver问题清单,主要包括了常见的问题及其解决方案,对于Dreamweaver初学者或者有一定经验但遇到问题的用户来说,都是非常有参考意义的。 为了更好的使用Dreamweaver,建议用户掌握“Dreamweaver经典问题45条”的完整攻略,下面是实现此目的的详细步骤:…

    css 2023年6月11日
    00
  • CSS使用position:sticky 实现粘性布局的方法

    下面来详细讲解一下如何使用 CSS 中的 position: sticky 实现粘性布局。 什么是粘性布局 在网页上,经常需要将某些元素固定在页面的顶部或底部,无论用户向上或向下滚动页面时,这些元素都应该保持在相应位置上。这就是所谓的粘性布局。 传统的实现方法是使用 JS 或 CSS 中的 position: fixed,但 position: fixed …

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