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

yizhihongxing

下面是详细讲解“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日

相关文章

  • Jquery 快速构建可拖曳的购物车DragDrop

    下面我将介绍如何使用JQuery 快速构建可拖曳的购物车DragDrop,包括下面的内容: 安装和导入JQuery脚本文件 构建基础的HTML结构 实现拖拽操作以及购物车的添加和删除 步骤一:安装和导入JQuery脚本文件 首先,你需要下载JQuery脚本文件。你可以在官方网站下载JQuery的最新版本,也可以使用CDN服务,比如: <script s…

    JavaScript 2023年6月10日
    00
  • Chart.js功能与使用方法小结

    Chart.js功能与使用方法小结 什么是Chart.js Chart.js是一款简单灵活的JavaScript图表库,可以用于绘制各种类型的图表,包括线图、柱状图、雷达图、饼图等等。Chart.js基于HTML5的Canvas元素实现,具有良好的兼容性和性能优势。 安装与引入 在使用Chart.js之前,需要先进行安装和引入。可以通过以下方式进行安装: n…

    JavaScript 2023年6月11日
    00
  • JavaScript操作DOM元素的childNodes和children区别

    当操作网页中的DOM元素时,常常需要获取元素的子元素以及对这些子元素进行操作。在JavaScript中,有两个常用的属性用于获取DOM元素的子元素,分别是childNodes和children。虽然它们的功能类似,但也有一些区别。下面我们进行一一讲解。 childNodes属性 childNodes属性返回某一元素的所有子节点,包括文本节点。这个属性返回的对…

    JavaScript 2023年6月11日
    00
  • 基于jquery的inputlimiter 实现字数限制功能

    下面是实现基于jquery的inputlimiter实现字数限制功能的完整攻略: 1. 安装jquery 如果你还没有安装jquery,可以到官网(https://jquery.com/)下载最新版的jquery,并在html文件中引入。 <script src="https://code.jquery.com/jquery-3.5.1.mi…

    JavaScript 2023年6月11日
    00
  • 微信小程序实现自定义底部导航

    实现微信小程序自定义底部导航需要经过以下步骤:1. 在app.json文件中定义底部导航栏2. 创建对应的底部导航栏页面3. 在底部导航栏页面中引用相应的子页面4. 最后,在各自页面中添加导航栏的相应内容,如背景色、图标及文字等。 下面来看一下具体的实现步骤以及示例。 步骤一: 在app.json文件中定义底部导航栏 在app.json文件中定义tabBar…

    JavaScript 2023年6月11日
    00
  • JavaScript获取当前网页最后修改时间的方法

    获取当前网页最后修改时间是一个常见的需求,可以通过JavaScript来实现。下面是一个完整的攻略,包括两条示例说明。 方法一:通过document.lastModified属性获取 每个HTML文档都有一个默认的document对象。document.lastModified属性可以返回当前网页最后修改时间,返回的是一个字符串类型的时间戳。 let las…

    JavaScript 2023年5月27日
    00
  • javascript+mapbar实现地图定位

    我们来详细讲解一下“JavaScript+Mapbar实现地图定位”的攻略。 1. 前置准备 首先,我们需要在页面中引入 mapbar.js ,该脚本文件提供了Mapbar地图API的相关方法和属性。 <script src="http://api.mapbar.com/api/map2.js?v=2.4"></scri…

    JavaScript 2023年6月11日
    00
  • javascript设计模式 – 状态模式原理与用法实例分析

    下面是“javascript设计模式 – 状态模式原理与用法实例分析”的完整攻略,包括原理、用法实例分析和示例说明。 前言 状态模式是一种行为型模式,它用一种更好的方式来处理对象状态之间的转换。在这篇文章中,我们将讨论状态模式的原理和用法实例分析。 状态模式原理 状态模式是一种通过使用状态和转换来实现状态转换的行为型模式。在这种模式中,状态表示为一个对象,而…

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