Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menggunakan JavaScript untuk meluncurkan imej ke kiri dan kanan dan menambah kesan zum?

Bagaimana untuk menggunakan JavaScript untuk meluncurkan imej ke kiri dan kanan dan menambah kesan zum?

WBOY
WBOYasal
2023-10-18 11:15:591250semak imbas

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

JavaScript Bagaimana untuk meluncurkan imej ke kiri dan kanan dan menambah kesan zum?

Dengan perkembangan Internet, gambar telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian kita. Dalam reka bentuk web, cara gambar dipersembahkan juga sangat penting. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk meluncurkan imej ke kiri dan kanan serta menambah kesan zum.

1. Struktur HTML

Pertama, kita perlu mencipta bekas imej dalam HTML dan meletakkan elemen imej di dalamnya. Contohnya:

<div class="slider">
  <img src="image1.jpg" alt="">
</div>

2. Tambah gaya CSS

Seterusnya, kita perlu menambah beberapa gaya CSS asas pada bekas imej untuk memastikan bekas imej boleh dipaparkan secara normal dan mempunyai saiz tertentu. Contohnya:

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

.slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

3. Untuk mencapai kesan gelongsor kiri dan kanan

Pertama, kita perlu mendapatkan bekas imej dan elemen imej, dan mengira jarak bagi setiap gelongsor. Kodnya adalah seperti berikut:

var slider = document.querySelector('.slider');
var image = document.querySelector('.slider img');
var slideDistance = 200; // 每次滑动的距离

Kemudian, kita boleh mengikat acara gelongsor pada bekas imej dan melaraskan kedudukan paparan imej mengikut arah gelongsor. Kodnya adalah seperti berikut:

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();
  }
}

4. Tambah kesan zum

Jika kita ingin mencapai kesan zum semasa meluncurkan gambar, kita boleh mendapatkan jarak gelongsor dalam acara gelongsor dan laraskan saiz gambar mengikut jarak. . Kod tersebut adalah seperti berikut:

// 在 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 + ')';
}

Melalui pelaksanaan kod di atas, kita boleh meluncurkan imej ke kiri dan kanan pada halaman web dan menambah kesan zum. Pada masa yang sama, semasa proses pelaksanaan, kami boleh melaraskan jarak gelongsor, nisbah penskalaan, dll. mengikut keperluan untuk memenuhi keperluan reka bentuk tertentu.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan JavaScript untuk meluncurkan imej ke kiri dan kanan dan menambah kesan zum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn