Muitos eventos novos foram adicionados ao HTML, mas devido a problemas de compatibilidade, muitos eventos não são amplamente utilizados. A seguir, apresentaremos alguns eventos de toque móveis úteis: touchstart, touchmove, touchend.
introduzirVamos apresentar brevemente esses eventos:
Esses eventos de toque têm propriedades de domínio comuns. Além disso, eles contêm três propriedades para rastrear toques:
Cada objeto de toque contém as seguintes propriedades:
Agora que você entende as características dos eventos de toque, vamos começar a emocionante sessão prática.
Combate realVamos usar eventos de toque para implementar uma barra de progresso deslizante no lado móvel.
Vamos definir o HTML primeiro
<div class=progress-wrapper> <div class=progress></div> <div class=progress-btn></div></div>
Parte CSS omitida aqui
Obtenha o elemento dom e inicialize o ponto inicial do toque e a distância entre o botão e a parte mais à esquerda do contêiner
const progressWrapper = document.querySelector('.progress-wrapper')const progress = document.querySelector('.progress')const progressBtn = document.querySelector('.progress-btn')const progressWrapperWidth = progressWrapper.offsetWidthlet touchPoint = 0let btnLeft = 0Ouça o evento touchstart
progressBtn.addEventListener('touchstart', e => { let touch = e.touches[0] touchPoint = touch.clientX // Obtenha a posição inicial do toque btnLeft = parseInt(getComputedStyle(progressBtn, null)['left'] , 10 ) // Ignore a compatibilidade do navegador IE aqui})Ouça eventos touchmove
progressBtn.addEventListener('touchmove', e => {e.preventDefault() let touch = e.touches[0] let diffX = touch.clientX - touchPoint // Calcula a distância alterada pela diferença entre a posição atual e a inicial position let btnLeftStyle = btnLeft + diffX // Define um novo valor esquerdo para o botão touch.target.style.left = btnLeftStyle + 'px' progress.style.width = (btnLeftStyle / progressWrapperWidth) * 100 + '%' // Calcula a porcentagem de comprimento da barra de progresso através da proporção entre o valor esquerdo do botão e o comprimento do contêiner da barra de progresso})Através de uma série de operações lógicas, nossa barra de progresso foi basicamente implementada, mas um problema foi descoberto quando a posição do toque excede o contêiner da barra de progresso, vamos fazer algumas restrições.
if (btnLeftStyle > progressWrapperWidth) { btnLeftStyle = progressWrapperWidth } else if (btnLeftStyle < 0) { btnLeftStyle = 0}Neste ponto, uma simples barra de rolagem móvel foi implementada
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.