Banyak event baru telah ditambahkan ke HTML, namun karena masalah kompatibilitas, banyak event yang tidak banyak digunakan. Selanjutnya, kami akan memperkenalkan beberapa event sentuh seluler yang berguna: touchstart, touchmove, touchend.
memperkenalkanMari kita perkenalkan secara singkat peristiwa-peristiwa ini:
Peristiwa sentuhan ini memiliki properti dom yang sama. Selain itu, mereka berisi tiga properti untuk melacak sentuhan:
Setiap objek sentuh berisi properti berikut:
Sekarang setelah Anda memahami karakteristik peristiwa sentuh, mari kita mulai sesi praktik yang menarik.
Pertarungan sebenarnyaMari gunakan acara sentuh untuk mengimplementasikan bilah kemajuan geser di sisi seluler.
Mari kita tata letak HTMLnya terlebih dahulu
<div class=progress-wrapper> <div class=progress></div> <div class=progress-btn></div></div>
Bagian CSS dihilangkan di sini
Dapatkan elemen dom dan inisialisasi titik awal sentuhan dan jarak antara tombol dan bagian paling kiri wadah
const progressWrapper = document.querySelector('.progress-wrapper')const progres = document.querySelector('.progress')const progresBtn = document.querySelector('.progress-btn')const progresWrapperWidth = progresWrapper.offsetWidthlet touchPoint = 0biarkan btnLeft = 0Dengarkan acara touchstart
progressBtn.addEventListener('touchstart', e => { let touch = e.touches[0] touchPoint = touch.clientX // Dapatkan posisi awal sentuhan btnLeft = parseInt(getComputedStyle(progressBtn, null)['left'] , 10 ) // Abaikan kompatibilitas browser IE di sini})Dengarkan acara touchmove
progresBtn.addEventListener('touchmove', e => {e.preventDefault() let touch = e.touches[0] let diffX = touch.clientX - touchPoint // Hitung perubahan jarak dengan selisih antara posisi saat ini dan posisi awal position let btnLeftStyle = btnLeft + diffX // Tentukan nilai kiri baru untuk tombol touch.target.style.left = btnLeftStyle + 'px' progres.gaya.lebar = (btnLeftStyle / progresWrapperWidth) * 100 + '%' // Hitung persentase panjang bilah kemajuan melalui rasio nilai kiri tombol dengan panjang wadah bilah kemajuan})Melalui serangkaian operasi logis, bilah kemajuan kami pada dasarnya telah diterapkan, tetapi masalah telah ditemukan. Ketika posisi sentuh melebihi wadah bilah kemajuan, bug akan terjadi. Mari kita buat beberapa batasan.
if (btnLeftStyle > progresWrapperWidth) { btnLeftStyle = progresWrapperWidth } else if (btnLeftStyle < 0) { btnLeftStyle = 0}Pada titik ini, bilah gulir seluler sederhana telah diterapkan
Di atas adalah keseluruhan isi artikel ini, saya harap dapat bermanfaat untuk pembelajaran semua orang. Saya juga berharap semua orang mendukung VeVb Wulin Network.