轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现。但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法:
1、利用位移的方法来实现
首先,我们可以在body中添加一个p并且将宽度设置成百分比(自适应页面),比例具体是相对谁的百分比的话按需求来做,在这里不多说。将图片放入到p 中。
其次,样式部分将img标签全部设置成absolute;以方便定位
最后,js部分说说逻辑,定义两个空数组,第一个数组用来保存初始的显示在页面的图片和等待进入的图片,第二个数组保存其余的n张图片,假设这两个数组分别设置为:waitToShow=[]; 和 goOut=[]; waitToShow.shift();弹出第一张图片假如命名为showFirst,并为showFirst图片设置位移和移动时间,执行完成之后showFirst放入goOut尾部:goOut.push(showFirst); 这时waitToShow数组的第0个元素就变成原来的第二张要显示的图片,给这个图片waitToShow[0]设置位移和移动时间,并且将goOut数组的首元素图片弹出来,在放进waitToShow数组的尾部,保证waitToShow数组永远是一张显示的图片和待显示的图片,这样就通过两个数组形成了一个循环来完成轮播图的实现。反向的逻辑是一样的(由于逻辑过于复杂这里不推荐)
2、利用层级的高低来使最顶部图片变化的做法
直接来代码更直观点:基本每行都有注释
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>轮播图 (闪现 自适应)</title> <style media="screen"> * { margin: 0; padding: 0; } .wrap { width: 60%; background: red; margin: auto; position: relative; } .wrap img { width: 100%; position: absolute; /*z-index: 10;*/ } input { border: 1px solid lightgray; width: 50px; height: 30px; background: red; border-radius: 5px; font-size: 20px; } </style> </head> <body> <p class="wrap"> <img src="img/01.jpg" alt="" /> <img src="img/02.jpg" alt="" /> <img src="img/03.jpg" alt="" /> <img src="img/04.jpg" alt="" /> </p> <input type="button" id="butLeft" name="name" value="◀︎"> <input type="button" id="butRight" name="name" value="▶︎"> </body> <script type="text/javascript"> // 获取images元素生成字符串数组,字符串数组不能进行push pop splice 等操作 // 所以要将它的值重新存放进一个数组中,后面有定义 var images = document.getElementsByTagName('img'); var butLeft = document.getElementById('butLeft'); var butRight = document.getElementById('butRight'); //获取变量index 用来为后面设置层级用 var index = 1000; // 获取一个空的数组,用来存放images里面的字符串元素 var imagess = []; // for循环用来给imagess数组赋值,并且改变数组中的元素的层级 for (var i = 0; i < images.length; i++) { imagess[i] = images[i]; var currentImage = imagess[i]; // 当前图片的层级的设置,一轮for循环都为他们设置了初始的zIndex,图片越靠前,层级设置 // 要求越高,所以用的是-i,这样图片会按顺序从第一张,第二张.....依次向下 currentImage.style.zIndex = -i; } // 设置计数器count,执行一次点击事件(向左或者向右)count加1 var count = 0; // 向左的点击事件 butLeft.onclick = function() { // 从数组头部弹出一个图片元素 var showFirst = imagess.shift(); // 给弹出的这个图片元素设置层级,即 -1000+count, // 让层级相较其他元素是最小的,数组头部弹出的图片会显示在最底层 showFirst.style.zIndex = - index + count; // 层级改变完成后再将他push进数组的尾部 imagess.push(showFirst); // 点击一次加1,不用考虑具体的值,只需要有点击事件加 1 count++; } // 向右点击事件 butRight.onclick = function() { // 从imagess的尾部弹出一个元素,并赋值给showFirst var showFirst = imagess.pop(); // 设置showFirst的层级为最大,1000+count ,这样他会显示在第一层 showFirst.style.zIndex = index + count; // 层级改变之后将他在插入数组imagess的头部 imagess.unshift(showFirst); // 点击一次加1 count++; } </script> </html>
以上是javascript利用层级高低来实现图片变化代码详解的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript在现实世界中的应用包括服务器端编程、移动应用开发和物联网控制:1.通过Node.js实现服务器端编程,适用于高并发请求处理。2.通过ReactNative进行移动应用开发,支持跨平台部署。3.通过Johnny-Five库用于物联网设备控制,适用于硬件交互。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具