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 :

Photo dynamique javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut Photo dynamique javascript
    Bonjour tout le monde

    J'ai un petit soucis avec une photo que je souhaiterais rendre dynamique.

    Je m'explique, cette photo est divisée en 4 parties et je voudrais que lors du passage de la souris sur l'une des 4 partis , celle ci s'agrandisse ( pas d'un coup , mais progressivement) + un texte qui se voit aussi agrandire, et que lors du clique , sa redirige vers une autre page en fonction de la partie de la photo choisie.

    Je pense que cela est possible avec javascript avec des mouseOver mouseOut et onClick mais je ne sais pas vraiment comment le mettre en forme ...

    Merci pour votre précieuse aide !!

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    oulaaaaaaaa je dirais pas que je ne sais pas le faire mais c'est complexe !!!
    Il faut d'abord que tu maitrises parfaitement les coordonées javascript car il va falloirt que tu bosses en absolus puis il faudrait que tu maitrises bien settimeout afin de gerer des boucles agrandissant les parties désirés.
    Tu débutes en javascript? car si c'est le cas arf ca va pas etre chaud

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Merci pour ta réponce,


    En ce qui concerne les coordonées sa peut allé, par contre settimeout connais pas.

    En javascript je ne débute pas mais je n'ai jamais fait de chose comme sa.

    Mais j'ai du temps et suis motivé.

    Donc ce qu'il faudrais dire c'est " si la souris est située entre les coordonées x1 y1 x2 y2 fait un zoom, si elle est ..., sinon fait rien...." c'est a peu près comme sa ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Si tu debutes pas je veux bien t'aider

    Oui c'est ca ! avec les attributs offset de l'image et celle de ta sourie tu en déduis des rapports puis apres c'est une histoire de calcul. settimeout va te permettre de faire des boucles automatiques (pratique pour animer une image en changeant ces attributs css etc).

    Apres un conseil etudis bien comment tu t'y prends pour resté toujours propre sinon ca va vite devenir le foutoir

  5. #5
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    je me suis amusé a faire ça :
    Code XHTML : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
    <html>
    <head>
    <script language="JavaScript">
    <!--
    function grand(image, i){
    	if(i <= 50){
    		image.style.position = "relative";
    	}
    	if(i < 350){
    		image.style.width = i;
    		image.style.height = i;
    		setTimeout(function(){grand(image, i+20)}, 1);
    	}
    }
    function petit(image, i){
    	if(i > 50){
    		image.style.width = i;
    		image.style.height = i;
    		setTimeout(function(){petit(image, i-20)}, 1);
    	} 
    	else{
    		image.style.position = "static";
    	}
    }
    -->
    </script>
    </head>
    <body>
    <img src="./terre.jpg" style="width:50px;height:50px;" onmouseover="grand(this, this.offsetWidth);" onmouseout="petit(this, this.offsetWidth);" />
    </body>
    </html>
    Images attachées Images attachées  

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Excellent ca devrait l'aidé ! mais ca ne fonctionne helas pas sur firefox :'( de plus il veux 4 parties ce qui complique le code ! mais tres bon début ! geniale j'ai pas a le faire merci tober

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
    <html>
    <head>
    <script language="JavaScript">
    <!--
    function grand(image, i){
    	if(i <= 50){
    		image.style.position = "relative";
    	}
    	if(i < 350){
    		image.style.width = i + 'px';
    		image.style.height = i + 'px';
    		setTimeout(function(){grand(image, i+20)}, 1);
    	}
    }
    function petit(image, i){
    	if(i > 50){
    		image.style.width = i + 'px';
    		image.style.height = i + 'px';
    		setTimeout(function(){petit(image, i-20)}, 1);
    	} 
    	else{
    		image.style.position = "static";
    	}
    }
    -->
    </script>
    </head>
    <body>
    <img src="./terre.jpg" style="width:50px;height:50px;" onmouseover="grand(this, this.offsetWidth);" onmouseout="petit(this, this.offsetWidth);" />
    </body>
    </html>
    Voila je les corrigé ^^ il fallait ajouté + 'px'

    Sinon a la vu de ce que tu souhaites faire je crois que tu devras couper l'image en 4 avant de pouvoir faire le truc !!! apres tu adaptes le code de tober et c'est finit ^^

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    yes !

    c'est exactement ce que je recherche !!

    je vais voir pour 4 parties merci déja pour votre aide !!

  9. #9
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    la fine équipe

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par UmanU Voir le message
    Bonjour tout le monde

    Je m'explique, cette photo est divisée en 4 parties et je voudrais que lors du passage de la souris sur l'une des 4 partis , celle ci s'agrandisse ( pas d'un coup , mais progressivement)

    Progressivement, tu peux faire ca avec settimout, voila un ex. pour afficher progressivement une photo :

    http://siova.galleryhp.com/photos/in...rsion=2#seeimg

    Voila un exemple de code qui permet d'effacer prog. une photo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      function hide_currentimg() {
        opacity = opacity - 20 ;
        setOpacity("img_diapo",opacity) ;
        if(opacity!=0) {
          setTimeout("hide_currentimg()",25) ;
        } else {
          document.getElementById('table_diapo').style.height = imgs[num_current].height ;
          document.getElementById('img_diapo').src = imgs[num_current].src ;
          if( (diapo == 1)&&(stop==0)&&(goto_top==1) ) {
            window.location.href='#top_pellicule' ;
          }
          setTimeout("show_currentimg()",600) ;
        }
      }
    Ou plus simple pour verifier si la photo suivante a bien ete telecharge:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      function check_nextloaded() {
        if(imgs[num_next].complete) {
          setOpacity("buton_next",100) ;
        } else {
          setTimeout("check_nextloaded()",20) ;
        }
      }
    Toutes les 20 ms, on check si la photo est chargee, c'est une fonction recursive...qui s'auto appelle tant que la tof n'est pas chargee !

    Si tu as des questions, m'hesite pas

    Vincent.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    defacta >> Ca va meme a force devenir le topic de la mort

    Avec ca UmanU tu nous fais ta petite source et hop tu postes ca [edit] dasn les contributions sur developpez[/edit]

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Je ne comprends pas bien ton aide defacta...

    je disais progressivement pour sire que sa ne zoom pas d'un coup le script de jypees est parfait !

    mais mon images n'a pas une hauteur et une largeur pareil ? a vrai dire le coef est hauteur*0.73 = largeur . j'ai remplacer les px mais sa n'a pas l'air de marche sa ne respecte pas les proportions

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Son script est une autre facon d'utiliser le settimeout, et de faire un fondu d'image ! va sur son site tu veras c'est vraiment sexe

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    c'est vrai que c'est pas mal !!! meme super jolie !

    Et pour les proportions ?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Ne faudrais t'il pas déja séparer les 2 dimentions ( hauteur et largeur ) ?

    J'ai essaié mais cela ne fonctionne pas pour l'instemps.

    Ce code est juste en guise de test, et est cencé fonctioner comme l'autre , mais non...

    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
    function grand(image, x, y)
    {
    	if(x <= 50 && y <= 50 )
    	{
    		image.style.position = "relative";
    	}
    	if(x < 350 && y < 350)
    	{
    		image.style.width = x + 'px';
    		image.style.height = y + 'px';
    		setTimeout(function(){grand(image, x+20, y+20)}, 1);
    	}
    }
    function petit(image, x, y)
    {
    	if(x > 50 && y > 50)
    	{
    		image.style.width = x + 'px';
    		image.style.height = y + 'px';
    		setTimeout(function(){petit(image, x-20, y-20)}, 1);
    	} 
    	else
    	{
    		image.style.position = "static";
    	}
    }

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Les proportions? de quoi tu parles? du code a tober ou bien de celui de defacta ?

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par jypees Voir le message
    Les proportions? de quoi tu parles? du code a tober ou bien de celui de defacta ?
    Les proportions ? Tu ne peux pas changer la taille que d'une partie d'une image !

    Le mieux a mon avis serait d'assombrier legerement la photo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      function setOpacity(id_img, i) {
       if (document.all){
          document.all(id_img).filters.alpha.opacity = i ;
        } else if (!document.all && document.getElementById) {	
          document.getElementById(id_img).style.MozOpacity = i/100 ;
        }
      }
     
     setOpacity("ta_photo",50) ;
    Et quand la souris est devant la partie de cette image, ca s'eclairci progressivement...
    Un truc un peu comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      function show_currentimg() {
        opacity = opacity + 20 ;
        setOpacity("ta_photo",opacity) ;
        if(opacity!=100) {
          setTimeout("show_currentimg()",20) ;
        }
      }
    Voili-Voilou

    Vincent.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Merci vincent.

    Donc si j'ai bien compris ton premier script conserne les 4 parties de la photo et le 2 doit etre remi 4 fois pour chacune des partis de la photo?

    Sinon un effet de zoom + ce que tu m'a montré serais super !!

    en fait avec mon code je voulais différencier la largeur de la hauteur,
    car ma photo est de 428/588 et non de 50/50 donc quand elle s'agrandi elle est déformée.

    De plus je voudrais que la parti en haut a droite s'agrandisse ver le haut a droite de meme pour les partis haut-gauche, bas-droite et bas gauche...

    Que de probleme...

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Je ne vois vraiment pas comment faire un zoom dynamique en Javascript !

    Tu peux nous montrer ce que tu as fait ? Comme ca ca fera une base pour discuter...

    Ce que tu peux faire aussi et qui serait plus simple serait de decouper la photo en 4, chaque partie collee les unes aux autres !

    Vincent.

Discussions similaires

  1. Menu dynamique javascript avec frame
    Par cosycorner dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/02/2007, 14h53
  2. Probleme photo css/javascript/Xhtml
    Par dibeloni dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 03/10/2006, 15h58
  3. liens menu dynamique javascript
    Par gregius dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/06/2006, 14h15
  4. largeur de photo xsl/javascript
    Par ddmonge dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/11/2005, 15h34
  5. [FLASH 8] Presentation photo dynamique
    Par Agard dans le forum Flash
    Réponses: 2
    Dernier message: 05/11/2005, 15h08

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