This article shares the specific code of JS to achieve a simple picture carousel effect for your reference. The specific content is as follows Achieve results
HTML source code <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Carousel chart</title> <link rel="stylesheet" href="./style.css" > <script src="./index.js"></script> <script src="./animate.js"></script> </head> <body> <div class="carousel_box" id="carousel-box"> <a href="javascript:;" class="arrow-l"> < </a> <a href="javascript:;" class="arrow-r"> > </a> <ul class="move"> <li><img src="./images/xuezhong_1.jpg" alt=""></li> <li><img src="./images/guimizhizhu_2.jpg" alt=""></li> <li><img src="./images/jianlai_3.jpg" alt=""></li> <li><img src="./images/yichang_4.jpg" alt=""></li> </ul> <ol class="circle"> </ol> </div> </body> </html> Inside a large div box, there are two buttons floating in the middle, four pictures, and a row of small circles below. CSS source code*{ padding: 0; margin: 0; } li { list-style-type: none; } #carousel-box { position: relative; width: 700px; height: 300px; background-color: pink; margin: 100px auto; overflow: hidden; } .arrow-l,.arrow-r { display: none; position:absolute; width: 24px; height: 40px; top: 50%; margin-top: -20px; background: rgba(0, 0, 0, 0.3); text-align:center; line-height: 40px; color: #fff; font-size: 18px; font-family: 'icomoon'; z-index: 3; } .arrow-r { right: 0; } #carousel-box img{ width: 700px; height: 300px; } #carousel-box ul { position:absolute; width: 1000%; } #carousel-box ul li { float: left; } .circle { position: absolute; bottom: 10px; right: 10px; } .circle li { float: left; width: 8px; height: 8px; margin: 0 5px; border: 2px solid rgba(255, 255, 255, 0.5); border-radius: 50%; cursor: pointer; z-index: 9999; } .current { background-color: pink; } JS source codeanimate.js: Function to move left and right on the horizontal plane function animate(obj, target, callback) { clearInterval(obj.timer); obj.timer = setInterval(function () { /* Determine whether the decimal is positive or negative, whether to take the larger or smaller decimal*/ var step = (target - obj.offsetLeft) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); if (obj.offsetLeft == target) { clearInterval(obj.timer); callback && callback(); } obj.style.left = obj.offsetLeft + step + 'px'; }, 15); } index.js window.addEventListener('load', function () { var carousel = document.querySelector('.carousel_box'); var ul = document.querySelector('.move'); var ol = document.querySelector('.circle'); var carcouselWidth = carousel.offsetWidth; var arrow_l = document.querySelector('.arrow-l'); var arrow_r = document.querySelector('.arrow-r'); carousel.addEventListener('mouseenter', function () { arrow_r.style.display = 'block'; arrow_l.style.display = 'block'; clearInterval(timer); timer = null; // clear the timer variable }) carousel.addEventListener('mouseleave', function () { arrow_r.style.display = 'none'; arrow_l.style.display = 'none'; timer = setInterval(function () { arrow_r.click(); }, 2000); }) var num = 0; var circle = 0; // Generate corresponding small circles according to the number of pictures for (var i = 0; i < ul.children.length; i++) { var li = document.createElement('li'); li.setAttribute('index', i); ol.appendChild(li); li.addEventListener('click', function () { for (var i = 0; i < ol.children.length; i++) { ol.children[i].className = ''; } this.className = 'current'; var n = this.getAttribute('index'); num = n; circle = n; animate(ul, -n * carcouselWidth); console.log(n); }) } ol.children[0].className = 'current'; var first = ul.children[0].cloneNode(true); ul.appendChild(first); var flag = true; /* function circleChange() { for (var i = 0; i < ol.children.length; i++) { ol.children[i].className = ''; } ol.children[circle].className = 'current'; } */ arrow_r.addEventListener('click', function () { if (flag) { flag = false; if (num == ul.children.length - 1) { ul.style.left = 0; num = 0; } num++; animate(ul, -num * carcouselWidth, function () { flag = true; }); } circle++; if (circle == ol.children.length) { circle = 0; } circleChange(); }) arrow_l.addEventListener('click', function () { if (flag) { flag = false; if (num == 0) { num = ul.children.length - 1; ul.style.left = -num * carcouselWidth + 'px'; } num--; animate(ul, -num * carcouselWidth, function () { flag = true; }); circle--; circle = circle < 0 ? ol.children.length - 1 : circle; //Call function circleChange(); } }); function circleChange() { for (var i = 0; i < ol.children.length; i++) { ol.children[i].className = ''; } ol.children[circle].className = 'current'; } var timer = setInterval(function () { arrow_r.click(); }, 2000); Experience: In the js implementation function, it is important to pay attention to how to generate small circles according to the number of pictures and enable seamless scrolling. The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
>>: Example of setting up a whitelist in Nginx using the geo module
background We can use react-color to implement th...
Nginx hides version number In a production enviro...
Table of contents Preface Features of Vue Native ...
I just happened to encounter this small requireme...
The blogger said : I have been writing a series o...
Download MySQL-8.0.23 Click to download: mysql-8....
When writing HTML code, the first line should be ...
Table of contents Preface toDoList just do it Pre...
1. Use the following command to set the ssh passw...
The four property values of position are: 1.rel...
Table of contents 01 Introduction to InnoDB Repli...
Implementing responsive layout with CSS Responsiv...
CentOS official website address https://www.cento...
HTML forms are used to collect different types of...
Due to the initial partitioning of the system, th...