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 相关文章推荐
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 Javascript
解决layer弹出层自适应页面大小的问题
Sep 16 Javascript
关于Layui Table隐藏列问题
Sep 16 Javascript
JS 事件机制完整示例分析
Jan 15 Javascript
详解javascript void(0)
Jul 13 Javascript
js实现详情页放大镜效果
Oct 28 Javascript
基于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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
javascript 跳转代码集合
2009/12/03 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Python验证码识别处理实例
2015/12/28 Python
使用Python绘制图表大全总结
2017/02/11 Python
python判断设备是否联网的方法
2018/06/29 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
行政助理的职责
2013/11/14 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
工会工作先进事迹
2014/08/18 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
行政助理岗位职责
2015/02/10 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技