Maison > interface Web > js tutoriel > le corps du texte

Comment utiliser JavaScript pour faire glisser l'image vers la gauche et la droite et ajouter un effet de zoom ?

WBOY
Libérer: 2023-10-18 11:15:59
original
1200 Les gens l'ont consulté

JavaScript 如何实现图片的左右滑动并加入缩放效果?

JavaScript Comment faire glisser l'image vers la gauche et la droite et ajouter un effet de zoom ?

Avec le développement d'Internet, les images sont devenues un élément indispensable de notre quotidien. Dans la conception de sites Web, la manière dont les images sont présentées est également très importante. Cet article explique comment utiliser JavaScript pour faire glisser l'image vers la gauche et la droite et ajouter un effet de zoom.

1. Structure HTML

Tout d'abord, nous devons créer un conteneur d'image en HTML et y imbriquer l'élément image. Par exemple :

<div class="slider">
  <img src="image1.jpg" alt="">
</div>
Copier après la connexion

2. Ajouter des styles CSS

Ensuite, nous devons ajouter quelques styles CSS de base au conteneur d'images pour garantir que le conteneur d'images peut s'afficher normalement et avoir une certaine taille. Par exemple :

.slider {
  width: 500px;
  height: 300px;
  overflow: hidden;
  position: relative;
}

.slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
Copier après la connexion

3. Pour obtenir l'effet de glissement gauche et droit

Tout d'abord, nous devons obtenir le conteneur d'image et les éléments de l'image, et calculer la distance pour chaque glissement. Le code est le suivant :

var slider = document.querySelector('.slider');
var image = document.querySelector('.slider img');
var slideDistance = 200; // 每次滑动的距离
Copier après la connexion

Ensuite, nous pouvons lier un événement de glissement au conteneur d'image et ajuster la position de l'affichage de l'image en fonction de la direction du glissement. Le code est le suivant :

slider.addEventListener('mousedown', startSlide);

function startSlide(e) {
  var startX = e.clientX;
  slider.addEventListener('mousemove', slideImage);

  function slideImage(e) {
    var moveX = e.clientX - startX;
    image.style.transform = 'translateX(' + moveX + 'px)';
  }

  slider.addEventListener('mouseup', stopSlide);
  slider.addEventListener('mouseleave', stopSlide);

  function stopSlide(e) {
    slider.removeEventListener('mousemove', slideImage);
    var moveX = e.clientX - startX;
    var absMoveX = Math.abs(moveX);
    var direction = moveX > 0 ? 'right' : 'left';

    if (absMoveX > slideDistance) {
      if (direction === 'right') {
        slideTo('prev');
      } else {
        slideTo('next');
      }
    } else {
      resetSlide();
    }
  }

  function resetSlide() {
    image.style.transform = 'translateX(0)';
  }

  function slideTo(direction) {
    var currentImageIndex = getIndex(image.getAttribute('src'));

    if (direction === 'prev') {
      currentImageIndex--;
    } else {
      currentImageIndex++;
    }

    if (currentImageIndex < 0) {
      currentImageIndex = imageList.length - 1;
    } else if (currentImageIndex >= imageList.length) {
      currentImageIndex = 0;
    }

    image.src = imageList[currentImageIndex];
    resetSlide();
  }
}
Copier après la connexion

4. Ajouter un effet de zoom

Si nous voulons obtenir l'effet de zoom en faisant glisser l'image, nous pouvons obtenir la distance de glissement dans l'événement de glissement et ajuster la taille de l'image en fonction de la distance . Le code est le suivant :

// 在 slideImage 函数中添加以下代码

function slideImage(e) {
  var moveX = e.clientX - startX;
  var scale = 1 - Math.abs(moveX) / (slider.offsetWidth / 2);

  if (scale < 0.3) {
    scale = 0.3;
  }

  image.style.transform = 'translateX(' + moveX + 'px) scale(' + scale + ')';
}
Copier après la connexion

Grâce à l'implémentation du code ci-dessus, nous pouvons faire glisser l'image vers la gauche et la droite sur la page Web et ajouter un effet de zoom. Dans le même temps, pendant le processus de mise en œuvre, nous pouvons ajuster la distance de glissement, le rapport de mise à l'échelle, etc. selon les besoins pour répondre aux besoins de conception spécifiques.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!