CSS3+JavaScript实现翻页幻灯片效果

下面是详细讲解“CSS3+JavaScript实现翻页幻灯片效果”的完整攻略。

简介

翻页幻灯片是一种常见的网页轮播图效果,可以用于网站的首页展示、图片展览等场景。这种效果通过CSS3的transition属性+JavaScript的事件绑定来实现。

前置条件

在实现这种效果之前,需要掌握以下知识:
- HTML5和CSS3基础知识
- JavaScript基础知识
- 熟练掌握CSS3的transition属性

实现步骤

  1. 编写HTML结构
<div class="slide">
  <ul class="slide-list">
    <li><img src="img1.jpg"></li>
    <li><img src="img2.jpg"></li>
    <li><img src="img3.jpg"></li>
  </ul>
</div>

其中,.slide为最外层的容器;.slide-list为幻灯片列表;li为幻灯片项,每个幻灯片项里面可以放置图片、文字等内容。

  1. 编写CSS样式
.slide {
  position: relative;
  width: 100%;
  height: 300px;
  overflow: hidden;
}

.slide-list {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  width: 300%;
  height: 100%;
  font-size: 0;
  transition: left 0.5s ease-out;
}

.slide-list li {
  position: relative;
  width: 33.333%;
  height: 100%;
  display: inline-block;
  margin: 0;
  padding: 0;
  font-size: 16px;
}

其中,.slideposition属性为相对定位,为了让子元素的绝对定位可以以此为基准,.slide-listwidth属性为300%,是因为子元素一共有3张图片,每张图片宽度为33.333%,这样可以让3张图片并排显示。li元素的display属性为inline-block,是为了让列表项可以横向排列。

  1. 编写JavaScript代码
var curIndex = 0; // 当前索引
var slide = document.querySelector('.slide'); // 幻灯片容器
var slideList = document.querySelector('.slide-list'); // 幻灯片列表
var slideItems = slideList.querySelectorAll('li'); // 幻灯片项
var slideCount = slideItems.length; // 幻灯片数量
var nextBtn = document.querySelector('#next'); // 下一页按钮
var prevBtn = document.querySelector('#prev'); // 上一页按钮

// 上一页
prevBtn.addEventListener('click', function() {
  curIndex--;
  if (curIndex < 0) {
    curIndex = slideCount - 1;
  }
  slideList.style.left = '-' + curIndex * 100 / slideCount + '%';
});

// 下一页
nextBtn.addEventListener('click', function() {
  curIndex++;
  if (curIndex >= slideCount) {
    curIndex = 0;
  }
  slideList.style.left = '-' + curIndex * 100 / slideCount + '%';
});

其中,curIndex为当前幻灯片的索引,slide为最外层的容器,slideList为幻灯片列表,slideItems为幻灯片项,slideCount为幻灯片数量。nextBtnprevBtn分别为下一页和上一页按钮。通过addEventListener绑定上一页和下一页的事件,在点击按钮时改变curIndex的值,然后通过修改slideListleft属性实现幻灯片滑动的效果。

示例说明

示例1:添加自动轮播效果

如果想要在用户不点击按钮的情况下自动轮播图片,可以通过setInterval方法实现。在上面的JavaScript代码基础上,添加以下部分即可实现自动轮播效果:

var intervalId = setInterval(function() {
  nextBtn.click();
}, 3000); // 每隔3秒自动轮播

// 鼠标悬停轮播停止,移开又开始轮播
slide.addEventListener('mouseover', function() {
  clearInterval(intervalId);
});

slide.addEventListener('mouseout', function() {
  intervalId = setInterval(function() {
    nextBtn.click();
  }, 3000);
});

其中,setInterval方法会每隔3秒触发nextBtn.click()事件,然后调用上面已经编写好的下一页的事件函数。当鼠标悬停在幻灯片上时会清除定时器,移开鼠标又会重新开启定时器。

示例2:添加缩略图导航条

在幻灯片下面添加缩略图导航条,可以让用户更清楚地了解图片的数量以及当前正在浏览的图片。实现方法如下:

<div class="slide-thumbnail">
  <ul class="thumbnail-list">
    <li class="active"></li>
    <li></li>
    <li></li>
  </ul>
</div>

其中,.slide-thumbnail为缩略图容器,.thumbnail-list为缩略图列表,.active类为当前显示的缩略图的样式,可以通过JavaScript来动态修改。

然后在JavaScript代码中添加以下部分:

var thumbnailList = document.querySelector('.thumbnail-list'); // 缩略图列表
var thumbnailItems = thumbnailList.querySelectorAll('li'); // 缩略图项

// 更新缩略图
function updateThumbnail() {
  for (var i = 0; i < thumbnailItems.length; i++) {
    thumbnailItems[i].classList.remove('active');
  }
  thumbnailItems[curIndex].classList.add('active');
}

updateThumbnail(); // 初始化缩略图

// 缩略图点击事件
for (var i = 0; i < thumbnailItems.length; i++) {
  thumbnailItems[i].index = i;
  thumbnailItems[i].addEventListener('click', function() {
    curIndex = this.index;
    slideList.style.left = '-' + curIndex * 100 / slideCount + '%';
    updateThumbnail();
  });
}

其中,updateThumbnail函数在每次切换幻灯片时触发,用来更新缩略图的显示。在代码中通过classList属性来实现active类的添加和删除,从而实现缩略图样式的变化。缩略图的点击事件绑定在每个缩略图项上,当用户点击缩略图时会通过修改curIndex的值以及slideListleft属性来实现幻灯片的切换。同时,也会调用updateThumbnail函数来更新缩略图的状态。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS3+JavaScript实现翻页幻灯片效果 - Python技术站

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

相关文章

  • Ajax Blog 用到的几个函数第2/3页

    我来详细讲解一下 “Ajax Blog 用到的几个函数第2/3页” 的完整攻略。 一、几个函数的作用 在 “Ajax Blog 用到的几个函数第2/3页” 中,主要介绍了以下几个函数: 1. getHttpObject() 该函数的作用是创建 XMLHttpRequest 对象,用于执行与服务器端的交互。在 Ajax 中,XMLHttpRequest 对象是…

    JavaScript 2023年6月11日
    00
  • 探讨JavaScript语句的执行过程

    我们来详细讲解一下“探讨JavaScript语句的执行过程”的完整攻略: 什么是JavaScript语句的执行过程? 在JavaScript中,语句的执行过程是指将代码逐行解释并执行的过程,然后将执行结果返回到执行环境中。JavaScript语句执行的过程是从上到下进行的。 在执行JavaScript代码时,代码的执行被分为两个步骤:编译和执行。编译是指将代…

    JavaScript 2023年5月18日
    00
  • js特殊字符过滤的示例代码

    JS特殊字符过滤是一种常见的前端技术,其目的是为了防止恶意注入脚本,保护网站安全性。下面,我们将介绍几种常见的JS特殊字符过滤代码。 基于字符编码的过滤 字符编码过滤的基本原理是将所有可能的JS特殊字符进行相应的编码,在输出时将编码重新转换为原有字符。常用的字符编码有HTML的&和”,URL的%20等。 以下是一个简单的示例: function ht…

    JavaScript 2023年6月10日
    00
  • 奉献给JavaScript初学者的编写开发的七个细节

    奉献给JavaScript初学者的编写开发的七个细节攻略 在编写JavaScript代码时,细节是非常重要的。这篇文章将向初学者介绍七个在JavaScript编写过程中需要注意的细节。 1.使用严格模式 使用”use strict”;来启用JavaScript的严格模式。这样做会让代码更加健壮,可以避免一些常见的错误,例如声明未使用的变量等。 示例: &qu…

    JavaScript 2023年5月18日
    00
  • 原生javascript单例模式的应用实例分析

    原生JavaScript单例模式是设计模式中比较经典的一种,可以控制某个对象只创建一个实例,适用于需要全局访问某个对象且只需要一个实例的场景。下面就是一个原生JavaScript单例模式的应用实例分析,帮助你更好地理解该设计模式的应用。 什么是原生JavaScript单例模式 原生JavaScript单例模式指在JavaScript中用最简单、最基本的方法创…

    JavaScript 2023年5月28日
    00
  • javascript中怎么做对象的类型判断

    在JavaScript中,我们可以使用typeof、instanceof、Object.prototype.toString()三种方式来判断一个对象的类型。 使用typeof typeof操作符可以用来判断一个对象的类型,但是它并不完全准确。例如,typeof null返回的是object,但是我们知道null并不是对象类型。 typeof null //…

    JavaScript 2023年5月27日
    00
  • javascript格式化日期时间函数

    JavaScript 格式化日期时间函数 JavaScript 提供了几个内置函数,用于格式化日期和时间。您可以使用这些函数轻松地格式化日期和时间。 Date 对象 跟踪时间是计算机编程中的一个常见任务。JavaScript 提供了日期对象来处理日期和时间。 创建一个日期对象有几种方法: let date = new Date(); 这个语句创建了一个包含当…

    JavaScript 2023年5月27日
    00
  • JavaScript split()使用方法与示例

    当我们需要将一个字符串按照指定分隔符进行拆分时,JavaScript的split()方法便可以派上用场。下面我们来详细讲解如何使用split()方法。 split()方法的基本语法 stringObject.split(separator,limit) 参数说明: separator:必需。规定分隔符。可以是字符串或者一个正则表达式。如果忽略该参数则返回单独…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部