IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Scroll tactile en Javascript ?


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Scroll tactile en Javascript ?
    Bonjour à tous.

    Est-ce possible en Javascript de mettre au point une sorte de scroll tactile sur une page web ?

    Je m'explique : vous voyez sûrement la manière dont on fait défiler verticalement une page sur un iPhone ou un iPad. Est-il possible de créer le même genre de comportement avec le pointeur de la souris sur un navigateur desktop ?

    Typiquement, détecter lorsque le clic gauche est suffisamment long (délai à fixer arbitrairement) puis faire défiler la page verticalement en fonction des mouvements du pointeur, tant que le clic est maintenu. Le point de la page situé sous le pointeur au moment du clic suit le pointeur. Quand le bouton de la souris est relâché, le scroll s'arrête.

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    au moyen du drag drop ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    ah d'accord, je suis rassuré... je croyais que tu voulais scroller l'écran avec ton doigt;

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok merci SpaceFrog.

    Je commencerai à lire ce tuto : est-il possible de drag-n-dropper tout le body d'une page HTML avec ce genre de méthodes ?

    Si vous avez plus de recul que moi sur la question (ce qui ne doit pas être dur), merci de me dire si ce tuto pourra me mener à la solution.

    Ou s'il existe plus simple.


    Edit : non Javatwister, je tiens à la propreté de mon écran.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il me semble qu'il y a des plugins jquery qui permette ça avec en prime le easing pour l'inertie
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Okay, voici mon code, fonctionnel sous Firefox 5, Safari 5, Chrome et Opera 11:

    Pas d'inertie, mais système de scroll "tactile" comme sur les appareils mobiles.

    [Requiert jQuery]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <!DOCTYPE html>
     
    <html>
    <head>
    	<title>Test Scroll Tactile</title>
    	<script type="text/javascript" src="jquery.min.js"></script>
    	<style type="text/css">
    		#content {
    			margin: 0px auto;
    			width: 400px;
    			height: 2000px;
    			background: #adf;
    		}
    		#pos {
    			position: fixed;
    			width: 400px;
    			background: #ff0;
    		}
    	</style>
    </head>
     
    <body>
     
    	<div id="content">
     
    		<div>
    			Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a dapibus tortor. In elit massa, fermentum vestibulum consectetur vel, posuere id nulla. Suspendisse potenti. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec fringilla, turpis a euismod suscipit, lectus nisl placerat dolor, id posuere mi tortor quis lacus. Nullam semper nisl et massa accumsan posuere. In fringilla mattis consequat. Curabitur et lacus nec nisl accumsan scelerisque nec in neque. Sed imperdiet pellentesque nisi a malesuada. Sed vel elementum magna. Phasellus vitae metus id diam ornare auctor nec nec ligula. Suspendisse potenti. Nulla facilisi. Vestibulum tellus magna, mollis non varius non, posuere sed elit. Duis ut fermentum enim. Nam semper risus eu est vulputate eget semper augue ultrices. Proin accumsan lacinia risus quis bibendum. Fusce eu eros sit amet ante facilisis egestas. Sed pharetra nibh eu turpis euismod vel pellentesque nulla gravida. 
    		</div>
     
    		<div id="pos">
    			(browser window) y on mousedown =<br>
    			scrollTop on mousedown =<br>
    			(browser window) current y =
    		</div>
     
    	</div>
     
    	<script type="text/javascript">
    		var down = false,
    			scrollTop = 0,
    			y = 0;
     
    		$('body').mousedown(function(e) {
    			down = true;
    			scrollTop = window.pageYOffset;
    			y = e.clientY;
    		}).mouseup(function() {
    			down = false;
    		}).mousemove(function(e) {
    			if (down) {
    				window.scrollTo(0, scrollTop + y - e.clientY );
    				document.getElementById('pos').innerHTML = '(browser window) mousedown y = ' + y + '<br>' +
    					'scrollTop on mousedown = ' + scrollTop + '<br>' +
    					'(browser window) current y = ' + e.clientY;
    			}
    		}).mouseleave(function() {
    			down = false;
    		});
     
    	</script>
     
    </body>
    </html>
    Dernière modification par Invité ; 05/07/2011 à 11h32.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je rouvre le sujet parce que je n'arrive pas à trouver les bons outils jQuery pour réaliser une inertie lorsque l'internaute relâche le bouton de la souris (cf. mon code ci-dessus). J'ai pris connaissance du plug-in Easing de jQuery mais je ne vois pas comment m'y prendre vu que j'aurais besoin, par exemple, de récupérer la vitesse de défilement lors de l'événement "mouseup".

    Est-ce possible avec jQuery, en s'économisant la réalisation d'un chronomètre et d'une fonction qui, par itérations, fasse décroître la vitesse de défilement de manière linéaire (ou quadratique, exponentielle... peu importe) ?

    Merci.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je n'arrive pas à adapter leur code (qui porte sur une div) à mon problème de scrolling de toute la page. En fait, il faudrait "jQueryser" mon code (cf. ci-dessus).
    Or je peine à trouver des équivalents en jQuery de l'attribut window.pageYOffset et de la méthode window.scrollTo(). Des idées ?

    Merci.

Discussions similaires

  1. Détecter la présence d'un scroll bar dans un tableau via javascript
    Par hastiok dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/12/2009, 15h52
  2. positionner un scroll dans un tableau en javascript
    Par air75 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/05/2009, 13h47
  3. scrolling en javascript
    Par martoune dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2007, 16h59
  4. [javascript] Déplacer scroll
    Par lenoil dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/05/2007, 14h13
  5. [javascript] Scroll avec une image
    Par Salih-du-91 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/10/2005, 07h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo