


Comment obtenir un effet carrousel dynamique avec JavaScript ? (exemple de code)
Le contenu de cet article est de savoir comment obtenir un effet carrousel dynamique avec JavaScript ? (exemple de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Description de la fonction :
1. gauche et droite Les flèches latérales sont affichées et les flèches sont masquées lorsque la souris part
2. Ajoutez dynamiquement un petit cercle en bas et liez l'événement de clic, puis synchronisez le. événement click du petit cercle avec l'événement click des flèches gauche et droite
3 Copiez la première image et ajoutez-la à ul Enfin, vous pouvez ajouter des images dynamiquement .
4. Liez l'événement de clic à la flèche et créez l'image Carrousel transparent
5. Implémentez un carrousel automatique (fonction d'animation)
Code d'implémentation spécifique :
1 Lorsque la souris entre, les flèches gauche et droite s'affichent, et lorsque la souris sort. , les flèches sont masquées
con.addEventListener('mouseenter', function() { arrow_l.style.display = 'block'; // 将左右箭头的display设为block arrow_r.style.display = 'block'; }); con.addEventListener('mouseleave', function() { arrow_l.style.display = 'none'; // 将左右箭头display设为none arrow_r.style.display = 'none'; });
2. Ajoutez dynamiquement un petit cercle en bas et liez l'événement click, et synchronisez l'événement click du petit cercle avec l'événement click de gauche. et flèches droite
for(var i = 0; i < ul.children.length; i++) { var li = document.createElement('li'); li.setAttribute('index', i); // 通过添加自定义属性来记录小圆圈索引号 ol.appendChild(li); // 将创建的li添加进ol里 // 生成小圆圈的同时就可以给它绑定单击事件 li.addEventListener('click', function() { // 排他思想 干掉所有人,留下我自己 for(var i = 0; i < ol.children.length; i++) { // 先把所有的小圆圈改为未选中状态 ol.children[i].className = ''; } // 再把当前小圆圈改为选中状态 this.className = 'current'; var index = this.getAttribute('index'); // 获取当前小圆圈的索引 // 将index值赋值给num以及circle,将小圆圈的点击事件和左右箭头点击事件同步 num = index; circle = index; animate(ul, - index * conWidth); }) }
3. Copiez la première image et ajoutez-la à ul Enfin, vous pouvez ajouter dynamiquement des images
// 克隆第一张图片 var first = ul.children[0].cloneNode(true); // true 深拷贝 ul.appendChild(first); // 拷贝第一张图片添加到ul最后
4. Liez un événement de clic à la flèche et permettez à l'image de pivoter de manière transparente
①Cliquez sur l'événement de la flèche à droite
var num = 0; // 用来存储点击后图片序号 var circle = 0; // 用来存储点击后小圆圈序号 var flag = true; // flag 节流阀 防止用户点击过快 图片播放太快 // 右侧箭头点击播放 arrow_r.addEventListener('click', function() { if(flag) { // 点击后先关闭节流阀 flag = false; // 如果播放到了最后一张,就把left直接值设为0从头播放,同时还原num if(num == ul.children.length - 1) { ul.style.left = 0; num = 0; } num++; animate(ul, - num * conWidth, function() { // 回调函数 动画执行完后开启节流阀 flag = true; }); // 小圆圈和箭头一起变化 circle++; /* if(circle == ol.children.length) { circle = 0; } */ // 可以用三元运算符判断小圆圈是否到了最后一个,如果是最后一个就还原circle circle == ol.children.length ? circle = 0 : circle; circleChange(); // 使当前小圆圈为选中状态(重复代码封装到一个函数里了) } })
②Cliquez sur l'événement de flèche gauche
arrow_l.addEventListener('click', function() { if(flag) { // 首先关闭节流阀 flag = false; // 如果播放到了第一张,就把left值设为最后一张的值 if(num == 0) { num = ul.children.length - 1; ul.style.left = - num * conWidth + 'px'; } num--; animate(ul, - num * conWidth, function() { flag = true; }); // 小圆圈和箭头一起变化 circle--; // 三元表达式 circle < 0 时说明是第一张图片,将小圆圈改为第四个(索引为3) circle < 0 ? circle = ol.children.length - 1 : circle; circleChange(); } })
circleChange(); code de fonction
// 小圆圈的选中状态(相同代码可以封装为一个函数,使代码更简洁) function circleChange() { // 排他思想 for(var i = 0; i < ol.children.length; i++) { ol.children[i].className = ''; } ol.children[circle].className = 'current'; }
5. Implémentation Carrousel automatique (fonction d'animation)
// 自动播放轮播图,相当于隔一段时间调用一次右侧箭头点击事件 var timer = setInterval(function() { // 手动调用点击事件 arrow_r.click(); }, 2000);
Fonction d'animation animate.js (ps : Je n'ai pas écrit ceci dans index.js ci-dessous, ceci Vous devez l'obtenir vous-même, vous pouvez l'importer sous forme d'animation .js ou collez-le directement dans votre code js)
// obj 动画对象 // target 目标位置 // callback 回调函数 function animate(obj, target, callback) { clearInterval(obj.timer); obj.timer = setInterval(function() { var step = (target - obj.offsetLeft) / 10; // step步长值 step = step > 0 ? Math.ceil(step) : Math.floor(step); // 大于零向上取整,小于零向下取整 if(obj.offsetLeft == target) { clearInterval(obj.timer); // if(callback) { // 判断是否传了回调函数 // callback(); // 回调函数,当动画执行完后才执行 // } // &&是短路运算符,存在callback时才会继续执行callback() callback && callback(); } obj.style.left = obj.offsetLeft + step + 'px'; }, 15) }
Le code d'implémentation spécifique est le suivant :
Code HTML :
<div class="con"> <i class="icon iconfont iconarrow_left arrow-l"></i> <i class="icon iconfont iconarrow_right arrow-r"></i> <ul> <li> <a href="javascript:;"><img src="images/img1.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="images/img2.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="images/img3.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="images/img4.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="images/img5.jpg" alt=""></a> </li> </ul> <ol> </ol> </div>
ps : Les petites flèches sur les côtés gauche et droit sont des icônes Iconfont (iconarrow_left, iconarrow_right ), à introduire
<link rel="stylesheet" href="http://at.alicdn.com/t/font_1518420_oljcm07nn2.css">
Code CSS :
<style> * { margin: 0; padding: 0; } ul,li,ol,a { list-style: none; text-decoration: none; } .con { width: 533px; height: 300px; margin: 100px auto; position: relative; background-color: #f0f0f0; overflow: hidden; } .arrow-l,.arrow-r{ display: none; width: 20px; height: 40px; line-height: 40px; text-align: center; color: #eee; position: absolute; top: 45%; background-color: rgba(0, 0, 0, 0.2); z-index: 2; cursor: pointer; } .arrow-l { left: 0; } .arrow-r{ right: 0; } ul { position: absolute; width: 600%; } ul li { float: left; } ul li img { width: 533px; height: 300px; } ol { position: absolute; left: 50%; bottom: 8px; -webkit-transform: translateX(-50%); transform: translateX(-50%); } ol li { float: left; width: 6px; height: 6px; margin: 0 2px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, 0.5); cursor: pointer; } .current { background-color: #ffe; } </style>
Code JavaScript détaillé (index.js)
window.addEventListener('load', function() { // 等页面加载完毕 // 获取需要用到的的元素 var arrow_l = document.querySelector('.arrow-l'); var arrow_r = document.querySelector('.arrow-r'); var con = document.querySelector('.con'); var conWidth = con.offsetWidth; // 鼠标经过箭头显示,鼠标离开箭头隐藏 con.addEventListener('mouseenter', function() { arrow_l.style.display = 'block'; // 将左右箭头的display设为block arrow_r.style.display = 'block'; // 鼠标经过停止定时器 clearInterval(timer); timer = null; // 释放定时器变量 }); con.addEventListener('mouseleave', function() { arrow_l.style.display = 'none'; // 将左右箭头display设为none arrow_r.style.display = 'none'; // 鼠标离开再重新开启定时器 timer = setInterval(function() { // 手动调用点击事件 arrow_r.click(); // 自动轮播 }, 2000); }); var ul = con.querySelector('ul'); var ol = con.querySelector('ol'); // 动态添加底部小圆圈 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 index = this.getAttribute('index'); // 获取当前小圆圈的索引 // 将index值赋值给num以及circle,将小圆圈的点击事件和左右箭头点击事件同步 num = index; circle = index; animate(ul, - index * conWidth); }) } // 让第一个小圆圈底色为白色(选中状态) ol.children[0].className = 'current'; // 克隆第一张图片 var first = ul.children[0].cloneNode(true); // true 深拷贝 ul.appendChild(first); // 拷贝第一张图片添加到ul最后 var num = 0; // 用来存储点击后图片序号 var circle = 0; // 用来存储点击后小圆圈序号 var flag = true; // flag 节流阀 防止用户点击过快 图片播放太快 // 右侧箭头点击播放 arrow_r.addEventListener('click', function() { if(flag) { // 点击后先关闭节流阀 flag = false; // 如果播放到了最后一张,就把left直接值设为0从头播放,同时还原num if(num == ul.children.length - 1) { ul.style.left = 0; num = 0; } num++; animate(ul, - num * conWidth, function() { // 回调函数 动画执行完后开启节流阀 flag = true; }); // 小圆圈和箭头一起变化 circle++; /* if(circle == ol.children.length) { circle = 0; } */ // 可以用三元运算符判断小圆圈是否到了最后一个,如果是最后一个就还原circle circle == ol.children.length ? circle = 0 : circle; circleChange(); // 使当前小圆圈为选中状态 } }) // 左侧箭头点击播放 arrow_l.addEventListener('click', function() { if(flag) { // 关闭节流阀 flag = false; // 如果播放到了第一张,就把left值设为最后一张的值 if(num == 0) { num = ul.children.length - 1; ul.style.left = - num * conWidth + 'px'; } num--; animate(ul, - num * conWidth, function() { flag = true; }); // 小圆圈和箭头一起变化 circle--; // circle < 0 时说明是第一张图片,将小圆圈改为第四个(索引为3) if(circle < 0) { circle = ol.children.length - 1; } 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); })
collection d'effets spéciaux javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

Utilisez l'applet WeChat pour obtenir un effet de commutation de carrousel. L'applet WeChat est une application légère avec des caractéristiques de développement et d'utilisation simples et efficaces. Dans les mini-programmes WeChat, il est courant d'obtenir des effets de commutation de carrousel. Cet article explique comment utiliser l'applet WeChat pour obtenir l'effet de changement de carrousel et donne des exemples de code spécifiques. Tout d’abord, ajoutez un composant carrousel au fichier d’échange de l’applet WeChat. Par exemple, vous pouvez utiliser la balise <swiper> pour obtenir l'effet de commutation du carrousel. Dans ce composant, vous pouvez passer b

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).
