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 相关文章推荐
Jquery为单选框checkbox绑定单击click事件
Dec 18 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
JS如何实现文本框随文本的长度而增长
Jul 30 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
p5.js入门教程之鼠标交互的示例
Mar 16 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
Vue 使用中的小技巧
Apr 26 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
微信小程序手机号码验证功能的实例代码
Aug 28 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
Vue源码解析之数据响应系统的使用
Apr 24 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
使用javascript插入样式
2016/03/14 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
Python高效编程技巧
2013/01/07 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Numpy掩码式数组详解
2018/04/17 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python3.6数独问题的解决
2019/01/21 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
毕业生自荐书
2013/12/18 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
大学运动会入场词
2014/02/22 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
单位婚育证明范本
2014/11/21 职场文书
撤诉状格式范本
2015/05/19 职场文书
《实心球》教学反思
2016/02/23 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript