Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer image au survol

Sujet résolu
    2 janvier 2018 à 10:57:23

    Bonjour, 

    J'aimerais savoir s'il est possible de modifier une image en fonction de la position de la souris. 

    Je m'explique, par exemple sur une carte de la France, modifier celle ci avec la région en couleur où  se trouve la souris

    L'image est en png, peut-être faut-il la passer en svg ?

    Ou je découpe chaque région et je change l'image individuellement de chaque région 

    Merci 

    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2018 à 11:14:03

      Ce serait beaucoup plus simple et expressif en SVG. Chaque région serait un path différent, donc tu t'en sortirais avec une simple règle CSS tandis qu'une solution sur la base d'images nécessiterait de générer des coordonnées pour un area map ou un canvas.

      Aussi, le PNG a beau être léger pour ce genre de graphisme, télécharger autant d'images qu'il y a de régions n'est pas la solution la plus pragmatique : le nombre de requêtes, le temps de latence entre les téléchargements et le poids même des images a un coût.

      Enfin, si tu dois faire quelque chose avec ta carte en Javascript, il sera plus concis si tu bénéficies du DOM.

      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2018 à 11:21:31

        D'accord 

        Si j'ai bien compris, je passe chaque région en svg et je change le svg avec un hover

        En fait de base j'avais fait un area map sur mon image pour déterminer un lien pour chaque région mais j'arrivais pas à modifier l'image en fonction de la position de la souris

        Je vais essayer le svg

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          2 janvier 2018 à 11:33:45

          Hello

          Un petit plugin jquery qui pourra t'aider:

          imageMapster

          • Partager sur Facebook
          • Partager sur Twitter
          Un petit +1 si je vous ai aidé est toujours appréciable :).
            2 janvier 2018 à 13:15:02

            Non, pas du tout ;)

            Un SVG c'est comme du HTML : chaque partie est stylable en CSS. Tu peux avoir une règle :hover qui change la couleur. En fonction du SVG, ça peut être aussi simple que #monSVG path:hover {fill: blue;}

            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2018 à 16:15:36

              Merci à vous deux, j'essaye d'abord l'idée de toubouretBleu, j'ai mon image en svg, avec 

              <svg

              <path id="" style="" d="">

              <path id="" style="" d="">

              J'ai essayé de mettre dans mon style CSS ta ligne de code avec mes id mais ça ne marche pas, dois-je mettre une div à chaque path ? Ou puis je modifier directement dans style mais je sais pas faire avec le :hover

              Merci 

              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2018 à 17:54:58

                C'est parce que tu utilises un attribut style dans tes balises <path>. En CSS un style en ligne a une plus grande priorité qu'un style définit dans une feuille de style. Tu peux définir le style de base de tes régions dans la feuille de style de la même façon que tu définis le style :hover. Note que tu peux utiliser des class, des id comme ne HTML, et tu peux utiliser la balise <g> comme une div pour regrouper des éléments et simplifier le ciblage CSS si tu veux faire des groupes de régions sans répéter des class.
                • Partager sur Facebook
                • Partager sur Twitter
                  3 janvier 2018 à 8:42:48

                  Bonjour, 

                  J'ai essayé ce que tu m'as dit tabouretBleu, j'ai i changé tous mes styles mais rien n'y fait, rien ne change

                  J'ai regardé l'idée de Krogoth et elle est plutôt pratique car j'avais déjà mes coordonnées avec area map j'ai changé l'image et le code mais j'obtiens des secteurs qui ne correspondent pas avec mon image, j'ai pourtant redimensionner mon image comme avant et mis les mêmes coordonnées qu'avant

                  Si vous avez une idée, merci

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 janvier 2018 à 9:37:31

                    Je ne peux pas t'aider si tu ne fais pas l'effort d'apprendre.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 janvier 2018 à 9:56:24

                      J'essaye d'apprendre, j'ai essayé ce que tu m'as dis j'ai tout mis en svg, j'ai changé mes path, j'ai ajouté des g, modifier mes style, mes feuilles de style, je vois pas d'autre solutions ducoup je suis passé sur la deuxième proposition de Krogoth

                      Je vois pas ce que je devais faire pour que ton idée marche, mais je te remercie 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 janvier 2018 à 12:57:51

                        C'est pas une idée, c'est un truc que je fais tous les jours. Quand un truc ne marche pas et que tu débutes, il faut reproduire le problème sur un code plus simple

                        https://jsfiddle.net/1hy7x2wr/

                        Y'a rien de compliqué.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 janvier 2018 à 14:32:36

                          Merci de ta réponse, j'ai essayé ta technique, elle fonctionne effectivement, mais j'ai un problème, il y a des carrés blanc qui se forme je ne sais comment 

                          https://jsfiddle.net/LL4431x0/1/#

                          Il y a en tout 4 aires, mais les aires ne se remplissent pas entièrement

                          Merci de ton aide

                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 janvier 2018 à 15:37:26

                            Ton fichier SVG a un problème. Quand je l'ouvre dans Illustrator je vois la même chose, et une inspection des éléments montre que les formes s'interpénètrent et ne sont pas correctement fermées. Ce n'est pas réparable apriori, il faut partir d'un bon fichier.

                            Par ailleurs, ton SVG est vraiment trop lourd pour du web. Il fait près de 73 000 points avec une précision de 3 chiffres après la virgule pour une largeur de 1200px. C'est bien trop précis vu la taille à laquelle tu affiches la carte. ça peut que faire ramer le navigateur et ça te fait un fichier de 930ko.Tu peux réduire le nombre de points à 10 000 en supprimant les décimales (ou en n'en laissant qu'une à la rigueur) tout en conservant le même niveau de détails, ça fait un peu plus de 200ko (70 gzipé), mais tu peux aussi utiliser une carte au graphisme plus épuré.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 janvier 2018 à 16:38:55

                              J'ai trouvé ce fichier sur le site data.gouv.fr ce qui me paraît bizarre qu'il soit abîmé, pense tu que c'est le fichier de base qui a un problème ?

                              Merci,  j'ai baissé le nombre de décimales en suivant ton conseil, ce qui m'améliore effectivement le temps de chargement mais j'ai toujours le même problème donc le fichier doit avoir un problème 

                               Si le fichier est abîmé, faut-il que je trouve une autre carte svg de la France ?

                               Merci

                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 janvier 2018 à 17:28:34

                                Si tu parles de cette carte https://openstreetmap.fr/f/France-departements.svg les régions ne sont pas délimitées comme des aires : les frontières sont dessinées avec des contours indépendants. Du coup quand tu veux remplir les path, le logiciel referme le tracé en faisant se rejoindre le premier et le dernier point des tracés.

                                Pour utiliser cette carte, il faudrait fusionner les contours de chaque région entre eux (en pensant à les dupliquer pour recommencer avec les régions contiguës). Ça promet d'être plutôt fastidieux, mais heureusement il y a peu de régions.

                                Si tes coordonnées map area sont extraites du SVG, ça explique pourquoi tu as eu du mal à les exploiter.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 janvier 2018 à 20:19:18

                                  D'accord, si j'ai bien compris je dois tracer chaque région avec combiner et relier les deux point aux extrémités et normalement sa crée des polygone qui se remplissent avec hover

                                  Merci de ton aide

                                  Pourtant mes coordonnées area map était prise avec paint.net car au début je voulais juste un lien sur mon image en fonction de la position sans animation 

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 janvier 2018 à 10:12:35

                                    Je ne sais pas comment on fait dans Pain.NET mais dans Illustrator il suffit d faire Objet > tracé > rejoindre (ou un truc comme ça, j'ai le logiciel en anglais)

                                    Tu as ta forme de base mal refermée.

                                    Tu vois qu'elle est constituée de pluseurs parties.

                                    Tu sélectionnes le tout et tu fais CTRL + J ou Objet > tracé > rejoindre.

                                    Et ta forme est correctement fermée

                                    Ici je montre juste un rectangle isolé, mais dans une carte où des régions sont voisines, certaines frontières servent plusieurs fois, donc il faut penser à les dupliquer.

                                    -
                                    Edité par tabouretBleu 4 janvier 2018 à 10:13:02

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 janvier 2018 à 16:20:50

                                      Nickel merci beaucoup, j'ai tout bien qui se remplit sans soucis en fonction de ma souris
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Changer image au survol

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown