Conversation Touch Event

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Powered by AI

Utilisateur

j’ai 2 div dans un parent la première la liste des conversations et la 2ième le chat en responsive client mobile
(max-sm pour tailwind) les 2 sont en w-full le parent a la propriété overflow-hidden qui empêche les
dépassement et cache la barre de scroll (ce qui est voulu)

le switch est fait automatiquement en cliquant sur une conversation vers le chat avec la fonction scrollintoView

comment à partir de la div du chat, je peux utiliser la propriété touch-action css pour que un glissement de
gauche à droite revienne sur la liste

Bing

Vous pouvez utiliser la propriété CSS touch-action pour contrôler comment la région d’un élément peut être
manipulée par un utilisateur d’écran tactile. Vous pouvez utiliser les valeurs pan-left et pan-right pour
activer les gestes de panoramique horizontal à un doigt. Vous pouvez également utiliser la valeur
manipulation pour activer les gestes de panoramique et de pincement pour zoomer, mais désactiver les gestes
non standard supplémentaires tels que le double-tap pour zoomer.

Cependant, il est important de noter que la propriété touch-action ne permet pas de déclencher des
événements en fonction des gestes de l’utilisateur. Vous devrez utiliser JavaScript pour détecter les gestes de
glissement et déclencher l’action souhaitée en conséquence.

Est-ce que cela répond à votre question? Avez-vous besoin d’aide pour écrire le code JavaScript pour détecter
les gestes de glissement?

Utilisateur

oui je ne veux pas écouter l’évenement mais que le scroll se fasse de chat vers list

Bing

Si vous voulez que le défilement se fasse automatiquement de la div de chat vers la liste des conversations en
faisant glisser de gauche à droite, vous pouvez utiliser JavaScript pour détecter les gestes de glissement et
déclencher l’action souhaitée en conséquence. Vous pouvez utiliser l’événement touchstart pour détecter
quand l’utilisateur commence à toucher l’écran et l’événement touchmove pour suivre les mouvements de
l’utilisateur. En comparant les positions de départ et d’arrivée, vous pouvez déterminer si l’utilisateur a
effectué un geste de glissement de gauche à droite et déclencher l’action souhaitée en conséquence.

Voulez-vous un exemple de code pour détecter les gestes de glissement de gauche à droite en JavaScript?

Utilisateur

y’a t’il pas un moyen d’ajouter pan-left à la div de chat pour que elle soit ramenée à la liste ?

je te donne le code

puis je ajouter pan-left à .chat pour effectuer un scroll retour vers list ?

Bing

Non, ajouter touch-action: pan-left à la div de chat ne déclenchera pas automatiquement un défilement
vers la liste des conversations. La propriété touch-action contrôle uniquement comment les gestes tactiles de
l’utilisateur sont traités par le navigateur, mais ne déclenche pas d’actions en fonction des gestes de
l’utilisateur.

Pour déclencher un défilement automatique vers la liste des conversations en faisant glisser de gauche à droite
sur la div de chat, vous devrez utiliser JavaScript pour détecter les gestes de glissement et déclencher l’action
souhaitée en conséquence. Vous pouvez utiliser l’événement touchstart pour détecter quand l’utilisateur
commence à toucher l’écran et l’événement touchmove pour suivre les mouvements de l’utilisateur. En
comparant les positions de départ et d’arrivée, vous pouvez déterminer si l’utilisateur a effectué un geste de
glissement de gauche à droite et déclencher l’action souhaitée en conséquence.

Voulez-vous un exemple de code pour détecter les gestes de glissement de gauche à droite en JavaScript?

Utilisateur

non je ne veux pas déclencher l’action je veux que à l’action le navigateur face un scroll natif sans que cela ne
passe par un listenner un peu comme un scroll naturel

Bing

Je comprends maintenant. Malheureusement, il n’est pas possible de déclencher un défilement natif du


navigateur en faisant glisser de gauche à droite sur la div de chat sans utiliser JavaScript. Le défilement natif
du navigateur ne fonctionne que verticalement (en faisant glisser de haut en bas) ou horizontalement (en
faisant glisser de gauche à droite) dans une zone de défilement. Si vous voulez que le défilement se fasse
automatiquement de la div de chat vers la liste des conversations en faisant glisser de gauche à droite, vous
devrez utiliser JavaScript pour détecter les gestes de glissement et déclencher l’action souhaitée en
conséquence.

Je suis désolé si cela ne répond pas à votre besoin. Avez-vous d’autres questions ou y a-t-il autre chose que je
peux faire pour vous aider?

Utilisateur

ici le defilement est natif

et ici le defilement est bloqué

je demande si en ajoutant pan-left ou autre valeur de touch-action le defilement peut revenir.

Bing

Non, ajouter touch-action: pan-left ou toute autre valeur de touch-action à la div de chat ou à tout autre
élément ne rétablira pas le défilement natif du navigateur si vous avez défini overflow: hidden sur l’élément
parent. La propriété overflow: hidden empêche le défilement en masquant tout contenu qui dépasse les
limites de l’élément. Si vous voulez que le défilement natif du navigateur fonctionne, vous devrez supprimer la
propriété overflow: hidden de l’élément parent.

La propriété touch-action contrôle uniquement comment les gestes tactiles de l’utilisateur sont traités par le
navigateur, mais ne déclenche pas d’actions en fonction des gestes de l’utilisateur et ne rétablit pas le
défilement natif du navigateur si vous avez défini overflow: hidden sur l’élément parent.

J’espère que cela répond à votre question. Avez-vous d’autres questions ou y a-t-il autre chose que je peux
faire pour vous aider?

Utilisateur

ok. dans mon cas où dois je ajouter pan-left

Bing

Si vous voulez utiliser la valeur pan-left de la propriété touch-action, vous pouvez l’ajouter à la div de chat
en ajoutant touch-action: pan-left à la règle CSS pour la classe .chat. Cela permettra aux utilisateurs
d’effectuer des gestes de panoramique horizontal à un doigt sur la div de chat.

Cependant, comme je l’ai mentionné précédemment, cela ne déclenchera pas automatiquement un défilement
vers la liste des conversations. La propriété touch-action contrôle uniquement comment les gestes tactiles de
l’utilisateur sont traités par le navigateur, mais ne déclenche pas d’actions en fonction des gestes de
l’utilisateur.

Si vous voulez que le défilement se fasse automatiquement de la div de chat vers la liste des conversations en
faisant glisser de gauche à droite, vous devrez utiliser JavaScript pour détecter les gestes de glissement et
déclencher l’action souhaitée en conséquence.
J’espère que cela répond à votre question. Avez-vous d’autres questions ou y a-t-il autre chose que je peux
faire pour vous aider?

Utilisateur

code moi une fonction de scroll qui va utiliser ontouchstart pour déterminer la distance de scroll pour retourner
à .list si la distance de touch est plus grande que 1/5 de la largeur de l’écran alors on scroll totalement vers .list

Bing

Voici un exemple de code JavaScript qui utilise les événements touchstart et touchend pour détecter les
gestes de glissement de gauche à droite sur la div de chat et déclencher un défilement vers la liste des
conversations si la distance parcourue est supérieure à 1/5 de la largeur de l’écran:

const chatDiv = document.querySelector('.chat');


const parentDiv = document.querySelector('.parent');
let touchStartX;

chatDiv.addEventListener('touchstart', (event) => {


touchStartX = event.touches[0].clientX;
});

chatDiv.addEventListener('touchend', (event) => {


const touchEndX = event.changedTouches[0].clientX;
const distance = touchEndX - touchStartX;
if (distance > window.innerWidth / 5) {
parentDiv.scrollLeft = 0;
}
});

Ce code ajoute des écouteurs d’événements touchstart et touchend à la div de chat. Lorsque l’utilisateur
commence à toucher l’écran, l’événement touchstart est déclenché et la position de départ est enregistrée.
Lorsque l’utilisateur lève le doigt de l’écran, l’événement touchend est déclenché et la position d’arrivée est
enregistrée. La distance parcourue est calculée en soustrayant la position de départ de la position d’arrivée. Si
cette distance est supérieure à 1/5 de la largeur de l’écran, le code déclenche un défilement vers la liste des
conversations en définissant la propriété scrollLeft de l’élément parent à 0.

J’espère que cela vous aidera. N’hésitez pas à me poser d’autres questions si vous avez besoin d’aide pour
adapter ce code à vos besoins.

Utilisateur

tu n’as pas fait de scroll qui va suivre la distance du touché

Bing

Vous avez raison, l’exemple de code que je vous ai fourni ne suit pas la distance parcourue par le doigt de
l’utilisateur pendant le geste de glissement. Il déclenche simplement un défilement vers la liste des
conversations si la distance totale parcourue est supérieure à 1/5 de la largeur de l’écran.

Si vous voulez que le défilement suive la distance parcourue par le doigt de l’utilisateur pendant le geste de
glissement, vous pouvez utiliser l’événement touchmove pour suivre les mouvements de l’utilisateur et mettre
à jour la propriété scrollLeft de l’élément parent en conséquence. Voici un exemple de code qui montre
comment cela peut être fait:

const chatDiv = document.querySelector('.chat');


const parentDiv = document.querySelector('.parent');
let touchStartX;

chatDiv.addEventListener('touchstart', (event) => {


touchStartX = event.touches[0].clientX;
});
chatDiv.addEventListener('touchmove', (event) => {
const touchCurrentX = event.touches[0].clientX;
const distance = touchStartX - touchCurrentX;
parentDiv.scrollLeft = distance;
});

chatDiv.addEventListener('touchend', (event) => {


const touchEndX = event.changedTouches[0].clientX;
const distance = touchEndX - touchStartX;
if (distance > window.innerWidth / 5) {
parentDiv.scrollLeft = 0;
}
});

Ce code ajoute un écouteur d’événement touchmove à la div de chat en plus des écouteurs d’événements
touchstart et touchend. Lorsque l’utilisateur déplace son doigt sur l’écran, l’événement touchmove est
déclenché et la position actuelle est enregistrée. La distance parcourue est calculée en soustrayant la position
de départ de la position actuelle. Cette distance est utilisée pour mettre à jour la propriété scrollLeft de
l’élément parent, ce qui déclenche un défilement qui suit les mouvements du doigt de l’utilisateur.

J’espère que cela répond mieux à votre besoin. N’hésitez pas à me poser d’autres questions si vous avez besoin
d’aide pour adapter ce code à vos besoins.

Utilisateur

le scroll doit s’éffectuer pendant le touchmove mais une fois que la distance atteint 1/5, le scroll bascule
totalement

Bing

Voici un exemple de code qui effectue un défilement pendant le geste de glissement en utilisant l’événement
touchmove et qui bascule totalement vers la liste des conversations si la distance parcourue atteint 1/5 de la
largeur de l’écran:

const chatDiv = document.querySelector('.chat');


const parentDiv = document.querySelector('.parent');
let touchStartX;

chatDiv.addEventListener('touchstart', (event) => {


touchStartX = event.touches[0].clientX;
});

chatDiv.addEventListener('touchmove', (event) => {


const touchCurrentX = event.touches[0].clientX;
const distance = touchStartX - touchCurrentX;
parentDiv.scrollLeft = distance;
});

chatDiv.addEventListener('touchend', (event) => {


const touchEndX = event.changedTouches[0].clientX;
const distance = touchEndX - touchStartX;
if (distance > window.innerWidth / 5) {
parentDiv.scrollLeft = 0;
} else {
parentDiv.scrollLeft = parentDiv.scrollWidth;
}
});

Ce code fonctionne de la même manière que l’exemple précédent, mais ajoute une vérification supplémentaire
dans l’écouteur d’événement touchend pour déterminer si la distance totale parcourue est supérieure à 1/5 de
la largeur de l’écran. Si c’est le cas, le code déclenche un défilement total vers la liste des conversations en
définissant la propriété scrollLeft de l’élément parent à 0. Sinon, le code déclenche un défilement total vers
la div de chat en définissant la propriété scrollLeft de l’élément parent à parentDiv.scrollWidth.
J’espère que cela répond à votre besoin. N’hésitez pas à me poser d’autres questions si vous avez besoin d’aide
pour adapter ce code à vos besoins.

Utilisateur

comment construire un élément html avec la méthode new ?

Bing

Pour créer un nouvel élément HTML en JavaScript, vous pouvez utiliser la méthode
document.createElement(). Cette méthode crée un nouvel élément HTML du type spécifié et renvoie une
référence à cet élément. Vous pouvez ensuite utiliser cette référence pour manipuler l’élément et l’ajouter à la
page.

Voici un exemple de code qui montre comment créer un nouvel élément div en utilisant la méthode
document.createElement():

const newDiv = document.createElement('div');


newDiv.textContent = 'Ceci est un nouvel élément div';
document.body.appendChild(newDiv);

Ce code crée un nouvel élément div en appelant document.createElement('div'). Il définit ensuite le


contenu de l’élément en utilisant la propriété textContent et ajoute l’élément à la page en appelant la méthode
appendChild() sur l’élément body.

J’espère que cela répond à votre question. N’hésitez pas à me poser d’autres questions si vous avez besoin
d’aide pour utiliser la méthode document.createElement().

Utilisateur

je veut le faire en faisant new sur la classe Element

Bing

Il n’est pas possible de créer un nouvel élément HTML en utilisant l’opérateur new sur la classe Element. La
classe Element est une classe abstraite qui représente un élément générique dans le document et ne peut pas
être instanciée directement.

Pour créer un nouvel élément HTML en JavaScript, vous devez utiliser la méthode
document.createElement(), comme je l’ai mentionné dans ma réponse précédente. Cette méthode crée un
nouvel élément HTML du type spécifié et renvoie une référence à cet élément.

J’espère que cela clarifie les choses. N’hésitez pas à me poser d’autres questions si vous avez besoin d’aide
pour créer des éléments HTML en JavaScript.

Utilisateur

sur quelle classe faut il donc appeller le constructer pour construire un élément html

Bing

Il n’y a pas de classe spécifique sur laquelle vous pouvez appeler un constructeur pour créer un nouvel élément
HTML en JavaScript. La méthode recommandée pour créer de nouveaux éléments HTML en JavaScript est
d’utiliser la méthode document.createElement(), comme je l’ai mentionné dans mes réponses précédentes.

La méthode document.createElement() est une méthode de l’objet document qui crée un nouvel élément
HTML du type spécifié et renvoie une référence à cet élément. Vous pouvez ensuite utiliser cette référence
pour manipuler l’élément et l’ajouter à la page.

Voici un exemple de code qui montre comment créer un nouvel élément div en utilisant la méthode
document.createElement():

const newDiv = document.createElement('div');


newDiv.textContent = 'Ceci est un nouvel élément div';
document.body.appendChild(newDiv);

Ce code crée un nouvel élément div en appelant document.createElement('div'). Il définit ensuite le


contenu de l’élément en utilisant la propriété textContent et ajoute l’élément à la page en appelant la méthode
appendChild() sur l’élément body.

J’espère que cela répond à votre question. N’hésitez pas à me poser d’autres questions si vous avez besoin
d’aide pour créer des éléments HTML en JavaScript.

Utilisateur

que fait concrètement la fonction creat

Bing

La fonction `document

Utilisateur

que fait concrètement la fonction createElement donne son code source

Bing

La fonction document.createElement() est une méthode intégrée de l’objet document qui permet de créer un
nouvel élément HTML du type spécifié. Cette méthode prend en argument une chaîne de caractères qui
représente le nom de la balise de l’élément à créer (par exemple, 'div', 'p', 'span', etc.) et renvoie une
référence à un nouvel objet Element qui représente l’élément HTML créé.

Voici un exemple de code qui montre comment utiliser la fonction document.createElement() pour créer un
nouvel élément div:

const newDiv = document.createElement('div');


newDiv.textContent = 'Ceci est un nouvel élément div';
document.body.appendChild(newDiv);

Ce code crée un nouvel élément div en appelant document.createElement('div'). Il définit ensuite le


contenu de l’élément en utilisant la propriété textContent et ajoute l’élément à la page en appelant la méthode
appendChild() sur l’élément body.

Le code source exact de la fonction document.createElement() dépend de l’implémentation du navigateur et


n’est pas disponible publiquement. Cette fonction est implémentée en interne par les navigateurs pour fournir
une interface standard pour créer des éléments HTML en JavaScript.

J’espère que cela répond à votre question. N’hésitez pas à me poser d’autres questions si vous avez besoin
d’aide pour utiliser la fonction document.createElement().

Vous aimerez peut-être aussi