


Implementation of slider carousel effect with submenus and controls in JavaScript
You may have done the project of infinite scrolling pictures (photo carousel), but if you use ordinary scrolling, when you reach the last picture, you will scroll back to the first picture. This is a very bad user experience. . Through this article, I will share with you the effect of slider carousel with submenus and controls based on JavaScript. The specific implementation code is as follows:
Achievement effect:
Implementation principle:
// Steps
// 1. Obtain the event source and related elements
// 2. Copy the li where the first picture is located and add it to the end of ul
// 3. Add li to ol, the number in ul -1, and light the first button
// 4. Put the mouse on ol's li to switch pictures
// 5. Add a timer
// 6. Switch pictures left and right (put the mouse on it to hide it, move it away to show it)
Implementation code:
<!DOCTYPE html> <html> <head> <title>轮播图</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; list-style: none; border: 0; } .all{ width: 500px; height: 200px; padding: 7px; margin: 100px auto; position: relative; box-shadow: 1px 1px 5px #2d2d2d; } .screen{ width: 500px; height: 200px; overflow: hidden; position: relative; } .screen li{ width: 500px; height: 200px; overflow: hidden; float: left; } .screen ul{ position: absolute; left: 0; top: 0; width: 3000px; } .all ol{ position: absolute; right: 10px; bottom: 10px; line-height: 20px; text-align: center; } .all ol li{ float: left; width: 20px; height: 20px; text-align: center; background-color: #fff; border: 1px solid #ccc; margin-left: 10px; cursor: pointer; } .all ol li.current{ background-color: #03c03c; } #arr{ display: none; } #arr span{ width: 40px; height: 40px; left: 5px; top: 50%; position: absolute; margin-top: -20px; background-color: #000; cursor: pointer; line-height: 35px; text-align: center; font-weight: bold; font-family: "微软雅黑"; font-size: 30px; color: #fff; opacity: 0.3; border-radius: 50%; box-shadow: 1px 1px 3px #2d2d2d; } #arr #right{ right: 5px; left: auto; } </style> </head> <body> <p class="all" id="all"> <p class="screen" id="screen"> <ul id="ul"> <li><img src="/static/imghwm/default1.png" data-src="./images/01.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="Implementation of slider carousel effect with submenus and controls in JavaScript" ></li> <li><img src="/static/imghwm/default1.png" data-src="./images/02.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="Implementation of slider carousel effect with submenus and controls in JavaScript" ></li> <li><img src="/static/imghwm/default1.png" data-src="./images/03.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="Implementation of slider carousel effect with submenus and controls in JavaScript" ></li> <li><img src="/static/imghwm/default1.png" data-src="./images/04.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="Implementation of slider carousel effect with submenus and controls in JavaScript" ></li> <li><img src="/static/imghwm/default1.png" data-src="./images/05.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="Implementation of slider carousel effect with submenus and controls in JavaScript" ></li> </ul> <!-- 图片子菜单 --> <ol> </ol> <!-- 左右切换按钮 --> <p id="arr"> <span id="left"><</span> <span id="right">></span> </p> </p> </p> <!-- script --> <script type="text/javascript"> // 赋值第一张图片放到ul的最后,当图片切换到第五张的时候,直接切换第六张,再从第一张切换到第二张的时候先瞬间切换到第一张图片,然后滑倒第二张 // 步骤 // 1. 获取事件源以及相关元素 // 2. 复制第一张图片所在的li,添加到ul的最后面 // 3. 给ol添加li,ul中的个数-1个,并点亮第一个按钮 // 4. 鼠标放到ol的li上切换图片 // 5. 添加定时器 // 6. 左右切换图片(鼠标放上去隐藏,移开显示) // 1. 获取事件源以及相关元素 var all = document.getElementById("all"); var screen = all.firstElementChild || all.firstChild; var imgWidth = screen.offsetWidth; var ul = screen.firstElementChild || screen.firstChild; var ol = screen.children[1]; var p = screen.lastElementChild || screen.lastChild; var spanArr = p.children; // 2. 复制第一张图片所在的li,添加到ul的最后面 var ulNewLi = ul.children[0].cloneNode(true); ul.appendChild(ulNewLi); // 3. 给ol添加li,ul中的个数-1个,并点亮第一个按钮 for(var i=0; i<ul.children.length-1; i++){ var olNewLi = document.createElement("li"); olNewLi.innerHTML = i+1; ol.appendChild(olNewLi); } var olLiArr = ol.children; olLiArr[0].className = "current"; // 4. 鼠标放到ol的li上切换图片 for(var i=0; i<olLiArr.length; i++){ // 自定义属性,把索引值绑定到元素的index属性上 olLiArr[i].index = i; olLiArr[i].onmouseover = function(){ // 排他思想 for(var j=0; j<olLiArr.length; j++){ olLiArr[j].className = ""; } this.className = "current" // 鼠标放到小方块上时,索引值和key以及square同步 // key = this.index; // square = this.index; key = square = this.index; // 移动盒子 animate(ul, -this.index*imgWidth); } } // 5. 添加定时器 var timer = setInterval(autoPlay, 1000); // 固定向右切换图片 // 两个定时器(一个记录图片,一个记录子菜单栏) var key = 0; var square = 0; function autoPlay(){ // 通过key的自增来模拟图片的索引值,然后移动ul key++; if(key > olLiArr.length){ // 图片已经滑到最后一张,接下来应该跳转到第一张,然后滑动到第二张 ul.style.left = 0; key = 1; } animate(ul, -key*imgWidth); // 通过控制square的自增来模拟小方块的索引值,然后点亮盒子 // 排他思想做小方块 square++; if(square > olLiArr.length-1){ // 索引值不能大于5,如果大于5则立即变为0; square = 0; } for(var i=0; i<olLiArr.length; i++){ olLiArr[i].className = ""; } olLiArr[square].className = "current"; } // 鼠标放上去清除定时器,移开启动定时器 all.onmouseover = function(){ p.style.display = "block"; clearInterval(timer); } all.onmouseout = function(){ p.style.display = "none"; timer = setInterval(autoPlay,1000); } // 6. 左右切换图片(鼠标放上去显示,移开隐藏) spanArr[0].onclick = function(){ // 通过控制key的自增来模拟图片的索引值,然后移动ul key--; if(key<0){ // 先移到最后一张,然后key的值取前一张的索引值,然后向前移动 ul.style.left = -imgWidth*(olLiArr.length) + "px"; key = olLiArr.length-1; } animate(ul, -key*imgWidth); // 通过控制square的自增来模拟小方块的索引值,然后点亮小方块 square--; if(square<0){ // 索引值不能大于等于5,如果为5,立即变为0 square = olLiArr.length-1; } for(var i=0; i<olLiArr.length; i++){ olLiArr[i].className = ""; } olLiArr[square].className = "current"; } spanArr[1].onclick = function(){ // 右侧的和定时器一模一样 autoPlay(); } // 动画封装 var absSpeed = 10; //设定步长 function animate(ele, target){ clearInterval(ele.timer); var speed = target > ele.offsetLeft ? absSpeed : -absSpeed; ele.timer = setInterval(function(){ var val = target - ele.offsetLeft; ele.style.left = ele.offsetLeft + speed + "px"; if(Math.abs(val) < Math.abs(speed)){ ele.style.left = target + "px"; clearInterval(ele.timer); } }, 10) } </script> </body> </html>
Summary
The above is the detailed content of Implementation of slider carousel effect with submenus and controls in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

JavaScript runs in browsers and Node.js environments and relies on the JavaScript engine to parse and execute code. 1) Generate abstract syntax tree (AST) in the parsing stage; 2) convert AST into bytecode or machine code in the compilation stage; 3) execute the compiled code in the execution stage.

The future trends of Python and JavaScript include: 1. Python will consolidate its position in the fields of scientific computing and AI, 2. JavaScript will promote the development of web technology, 3. Cross-platform development will become a hot topic, and 4. Performance optimization will be the focus. Both will continue to expand application scenarios in their respective fields and make more breakthroughs in performance.

Both Python and JavaScript's choices in development environments are important. 1) Python's development environment includes PyCharm, JupyterNotebook and Anaconda, which are suitable for data science and rapid prototyping. 2) The development environment of JavaScript includes Node.js, VSCode and Webpack, which are suitable for front-end and back-end development. Choosing the right tools according to project needs can improve development efficiency and project success rate.

Yes, the engine core of JavaScript is written in C. 1) The C language provides efficient performance and underlying control, which is suitable for the development of JavaScript engine. 2) Taking the V8 engine as an example, its core is written in C, combining the efficiency and object-oriented characteristics of C. 3) The working principle of the JavaScript engine includes parsing, compiling and execution, and the C language plays a key role in these processes.

JavaScript is at the heart of modern websites because it enhances the interactivity and dynamicity of web pages. 1) It allows to change content without refreshing the page, 2) manipulate web pages through DOMAPI, 3) support complex interactive effects such as animation and drag-and-drop, 4) optimize performance and best practices to improve user experience.

C and JavaScript achieve interoperability through WebAssembly. 1) C code is compiled into WebAssembly module and introduced into JavaScript environment to enhance computing power. 2) In game development, C handles physics engines and graphics rendering, and JavaScript is responsible for game logic and user interface.

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Chinese version
Chinese version, very easy to use

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
