Javascript幻灯片播放功能实现过程解析


Posted in Javascript onMay 07, 2020

javascript实现幻灯片播放

实现原理

  • step1 设置容器,包含图片、翻页、下标等元素,通过相对定位来布局。
  • step2 将幻灯片变化,需要改变的元素放在一个字容器内,display设为none,并且采取动画来变化。
  • step3设置js函数,将应该播放的元素样式激活,其他的元素仍为未激活状态或者不展示类的隐藏。

代码

html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 引入css样式 -->
<link rel="stylesheet" href="style.css" rel="external nofollow" type="text/css">

</head>
<body>
	<!-- 先设置轮播的整体容器 -->
	<div class="slideshow-container">
		<!-- 在设置轮播图片、翻页键、数字文本的容器 -->
		<!-- fade为滑动动画特效 -->
		<div class="mySlides fade">
			<div class="numbertext">1 / 3</div>
			<img src="img/1.jpg" style="width: 100%">
			<div class="text">文本 1</div>
		</div>

		<div class="mySlides fade">
			<div class="numbertext">2 / 3</div>
			<img src="img/2.jpg" style="width: 100%">
			<div class="text">文本 2</div>
		</div>

		<div class="mySlides fade">
			<div class="numbertext">3 / 3</div>
			<img src="img/3.jpg" style="width: 100%">
			<div class="text">文本 3</div>
		</div>
		
		<a class="prev" onclick="plusSlides(-1)">❮</a> 
		<a class="next" onclick="plusSlides(1)">❯</a>
	</div>
	<br>
	<!-- 设置下方按钮 -->
	<div style="text-align: center">
		<span class="dot" onclick="currentSlide(1)"></span>
		<span class="dot" onclick="currentSlide(2)"></span>
		<span class="dot" onclick="currentSlide(3)"></span>
	</div>
  <!-- 引入js文件,注意js文件应该在下方,否则将无法出现错误,个人觉得错误原因应该是元素未加载而去执行js文件导致错误,具体原因还需探究-->
	<script src="show.js" type="text/javascript"></script>
</body>

</html>

css

@charset "UTF-8";
* {box-sizing:border-box}
body {font-family: Verdana,sans-serif;}
.mySlides {
	display:none;
  /*display 为none的含义是不展示元素,但是且不占用空间*/
}
/* 幻灯片容器 */
.slideshow-container {
 max-width: 1000px;
 position: relative;
 margin: auto;
}

/* 下一张 & 上一张 按钮 */
.prev, .next {
 cursor: pointer;
 position: absolute;
 top: 50%;
 width: auto;
 margin-top: -22px;
 padding: 16px;
 color: white;
 font-weight: bold;
 font-size: 18px;
 transition: 0.6s ease;
 border-radius: 0 3px 3px 0;
}

/* 定位 "下一张" 按钮靠右 */
.next {
 right: 0;
 border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover, .next:hover {
 background-color: rgba(0,0,0,0.8);
}

/* 标题文本 */
.text {
 color: #f2f2f2;
 font-size: 15px;
 padding: 8px 12px;
 position: absolute;
 bottom: 8px;
 width: 100%;
 text-align: center;
}

/* 数字文本 (1/3 等) */
.numbertext {
 color: #f2f2f2;
 font-size: 12px;
 padding: 8px 12px;
 position: absolute;
 top: 0;
}

/* 标记符号 */
.dot {
 cursor:pointer;
 height: 13px;
 width: 13px;
 margin: 0 2px;
 background-color: #bbb;
 border-radius: 50%;
 display: inline-block;
 transition: background-color 0.6s ease;
}

.active, .dot:hover {
 background-color: #717171;
}

/* 淡出动画 */
.fade {
 -webkit-animation-name: fade;
 -webkit-animation-duration: 1.5s;
 animation-name: fade;
 animation-duration: 1.5s;
}

@-webkit-keyframes fade {
 from {opacity: .4} 
 to {opacity: 1}
}

@keyframes fade {
 from {opacity: .4} 
 to {opacity: 1}
}

js

var slideIndex = 1;

function plusSlides(n) {
 showSlides(slideIndex += n);
}

function currentSlide(n) {
 showSlides(slideIndex = n);
}

function showSlides(n) {
 var i;
 var slides = document.getElementsByClassName("mySlides");
 var dots = document.getElementsByClassName("dot");
 if (n > slides.length) {slideIndex = 1} 
 if (n < 1) {slideIndex = slides.length}
 for (i = 0; i < slides.length; i++) {
   slides[i].style.display = "none"; 
 }//class为mySlides下的元素,即不展示项目的图片元素、数字元素和文本元素
 for (i = 0; i < dots.length; i++) {
   dots[i].className = dots[i].className.replace(" active", "");//将激活的下标元素,改为不再展示
 }
 slides[slideIndex-1].style.display = "block";//轮播的元素展示 
 dots[slideIndex-1].className += " active";//轮播图片对应下标样式激活
}
showSlides(slideIndex);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javaScript arguments 对象使用介绍
Oct 18 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
javascript中var的重要性分析
Feb 11 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
bootstrap fileinput完整实例分享
Nov 08 Javascript
JS实现类似51job上的地区选择效果示例
Nov 17 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
vue 实现锚点功能操作
Aug 10 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
基于javascript实现日历功能原理及代码实例
May 07 #Javascript
Vue简单实现原理详解
May 07 #Javascript
angular组件间通讯的实现方法示例
May 07 #Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 #Javascript
Vue双向绑定实现原理与方法详解
May 07 #Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
May 07 #Javascript
微信小程序pinker组件使用实现自动相减日期
May 07 #Javascript
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
NOT NULL 和NULL
2007/01/15 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
利用JS实现数字增长
2016/07/28 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python控制Firefox方法总结
2019/06/03 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
美国牛仔品牌:True Religion
2018/11/16 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
毕业生就业自荐书
2013/12/15 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
十岁生日答谢词
2015/01/05 职场文书
拾金不昧感谢信
2015/01/21 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书