Texte en survolant zone image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Texte en survolant zone image

Re: Texte en survolant zone image [résolu]

par Herve_be » 11 sept. 2013, 13:00

Merci mais entretemps j'ai trouvé aussi !
Voir résultat ici http://www.rudyv.be/PilotePrive/Album.php#

Re: Texte en survolant zone image

par juliette » 11 sept. 2013, 11:35

Bon, comme je ne comprenais pas pourquoi ca ne fonctionnais pas, j'ai tester et j'ai réussi mais j'ai un soucis, je ne sais toujours pas pourquoi et je ne peux pas t'en dire plus !!!
En revanche, je suis sport alors je te donne le code...
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
        <script>
            (function(G){var B,J,C,K,N,M,I,E,H,A,L;J=!!document.createElement("canvas").getContext;B=(function(){var P=document.createElement("div");P.innerHTML='<v:shape id="vml_flag1" adj="1" />';var O=P.firstChild;O.style.behavior="url(#default#VML)";return O?typeof O.adj=="object":true})();if(!(J||B)){G.fn.maphilight=function(){return this};return }if(J){E=function(O){return Math.max(0,Math.min(parseInt(O,16),255))};H=function(O,P){return"rgba("+E(O.substr(0,2))+","+E(O.substr(2,2))+","+E(O.substr(4,2))+","+P+")"};C=function(O){var P=G('<canvas style="width:'+O.width+"px;height:"+O.height+'px;"></canvas>').get(0);P.getContext("2d").clearRect(0,0,P.width,P.height);return P};var F=function(Q,O,R,P,S){P=P||0;S=S||0;Q.beginPath();if(O=="rect"){Q.rect(R[0]+P,R[1]+S,R[2]-R[0],R[3]-R[1])}else{if(O=="poly"){Q.moveTo(R[0]+P,R[1]+S);for(i=2;i<R.length;i+=2){Q.lineTo(R[i]+P,R[i+1]+S)}}else{if(O=="circ"){Q.arc(R[0]+P,R[1]+S,R[2],0,Math.PI*2,false)}}}Q.closePath()};K=function(Q,T,U,X,O){var S,P=Q.getContext("2d");if(X.shadow){P.save();if(X.shadowPosition=="inside"){F(P,T,U);P.clip()}var R=Q.width*100;var W=Q.height*100;F(P,T,U,R,W);P.shadowOffsetX=X.shadowX-R;P.shadowOffsetY=X.shadowY-W;P.shadowBlur=X.shadowRadius;P.shadowColor=H(X.shadowColor,X.shadowOpacity);var V=X.shadowFrom;if(!V){if(X.shadowPosition=="outside"){V="fill"}else{V="stroke"}}if(V=="stroke"){P.strokeStyle="rgba(0,0,0,1)";P.stroke()}else{if(V=="fill"){P.fillStyle="rgba(0,0,0,1)";P.fill()}}P.restore();if(X.shadowPosition=="outside"){P.save();F(P,T,U);P.globalCompositeOperation="destination-out";P.fillStyle="rgba(0,0,0,1);";P.fill();P.restore()}}P.save();F(P,T,U);if(X.fill){P.fillStyle=H(X.fillColor,X.fillOpacity);P.fill()}if(X.stroke){P.strokeStyle=H(X.strokeColor,X.strokeOpacity);P.lineWidth=X.strokeWidth;P.stroke()}P.restore();if(X.fade){G(Q).css("opacity",0).animate({opacity:1},100)}};N=function(O){O.getContext("2d").clearRect(0,0,O.width,O.height)}}else{C=function(O){return G('<var style="zoom:1;overflow:hidden;display:block;width:'+O.width+"px;height:"+O.height+'px;"></var>').get(0)};K=function(P,T,U,X,O){var V,W,R,S;for(var Q in U){U[Q]=parseInt(U[Q],10)}V='<v:fill color="#'+X.fillColor+'" opacity="'+(X.fill?X.fillOpacity:0)+'" />';W=(X.stroke?'strokeweight="'+X.strokeWidth+'" stroked="t" strokecolor="#'+X.strokeColor+'"':'stroked="f"');R='<v:stroke opacity="'+X.strokeOpacity+'"/>';if(T=="rect"){S=G('<v:rect name="'+O+'" filled="t" '+W+' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:'+U[0]+"px;top:"+U[1]+"px;width:"+(U[2]-U[0])+"px;height:"+(U[3]-U[1])+'px;"></v:rect>')}else{if(T=="poly"){S=G('<v:shape name="'+O+'" filled="t" '+W+' coordorigin="0,0" coordsize="'+P.width+","+P.height+'" path="m '+U[0]+","+U[1]+" l "+U.join(",")+' x e" style="zoom:1;margin:0;padding:0;display:block;position:absolute;top:0px;left:0px;width:'+P.width+"px;height:"+P.height+'px;"></v:shape>')}else{if(T=="circ"){S=G('<v:oval name="'+O+'" filled="t" '+W+' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:'+(U[0]-U[2])+"px;top:"+(U[1]-U[2])+"px;width:"+(U[2]*2)+"px;height:"+(U[2]*2)+'px;"></v:oval>')}}}S.get(0).innerHTML=V+R;G(P).append(S)};N=function(P){var O=G("<div>"+P.innerHTML+"</div>");O.children("[name=highlighted]").remove();P.innerHTML=O.html()}}M=function(P){var O,Q=P.getAttribute("coords").split(",");for(O=0;O<Q.length;O++){Q[O]=parseFloat(Q[O])}return[P.getAttribute("shape").toLowerCase().substr(0,4),Q]};L=function(Q,P){var O=G(Q);return G.extend({},P,G.metadata?O.metadata():false,O.data("maphilight"))};A=function(O){if(!O.complete){return false}if(typeof O.naturalWidth!="undefined"&&O.naturalWidth===0){return false}return true};I={position:"absolute",left:0,top:0,padding:0,border:0};var D=false;G.fn.maphilight=function(O){O=G.extend({},G.fn.maphilight.defaults,O);if(!J&&!D){G(window).ready(function(){document.namespaces.add("v","urn:schemas-microsoft-com:vml");var Q=document.createStyleSheet();var P=["shape","rect","oval","circ","fill","stroke","imagedata","group","textbox"];G.each(P,function(){Q.addRule("v\\:"+this,"behavior: url(#default#VML); antialias:true")})});D=true}return this.each(function(){var U,R,Y,Q,T,V,X,S,W;U=G(this);if(!A(this)){return window.setTimeout(function(){U.maphilight(O)},200)}Y=G.extend({},O,G.metadata?U.metadata():false,U.data("maphilight"));W=U.get(0).getAttribute("usemap");if(!W){return }Q=G('map[name="'+W.substr(1)+'"]');if(!(U.is('img,input[type="image"]')&&W&&Q.size()>0)){return }if(U.hasClass("maphilighted")){var P=U.parent();U.insertBefore(P);P.remove();G(Q).unbind(".maphilight").find("area[coords]").unbind(".maphilight")}R=G("<div></div>").css({display:"block",background:'url("'+this.src+'")',position:"relative",padding:0,width:this.width,height:this.height});if(Y.wrapClass){if(Y.wrapClass===true){R.addClass(G(this).attr("class"))}else{R.addClass(Y.wrapClass)}}U.before(R).css("opacity",0).css(I).remove();if(B){U.css("filter","Alpha(opacity=0)")}R.append(U);T=C(this);G(T).css(I);T.height=this.height;T.width=this.width;X=function(c){var a,b;b=L(this,Y);if(!b.neverOn&&!b.alwaysOn){a=M(this);K(T,a[0],a[1],b,"highlighted");if(b.groupBy){var Z;if(/^[a-zA-Z][\-a-zA-Z]+$/.test(b.groupBy)){Z=Q.find("area["+b.groupBy+'="'+G(this).attr(b.groupBy)+'"]')}else{Z=Q.find(b.groupBy)}var d=this;Z.each(function(){if(this!=d){var f=L(this,Y);if(!f.neverOn&&!f.alwaysOn){var e=M(this);K(T,e[0],e[1],f,"highlighted")}}})}if(!J){G(T).append("<v:rect></v:rect>")}}};G(Q).bind("alwaysOn.maphilight",function(){if(V){N(V)}if(!J){G(T).empty()}G(Q).find("area[coords]").each(function(){var Z,a;a=L(this,Y);if(a.alwaysOn){if(!V&&J){V=C(U[0]);G(V).css(I);V.width=U[0].width;V.height=U[0].height;U.before(V)}a.fade=a.alwaysOnFade;Z=M(this);if(J){K(V,Z[0],Z[1],a,"")}else{K(T,Z[0],Z[1],a,"")}}})});G(Q).trigger("alwaysOn.maphilight").find("area[coords]").bind("mouseover.maphilight",X).bind("mouseout.maphilight",function(Z){N(T)});U.before(T);U.addClass("maphilighted")})};G.fn.maphilight.defaults={fill:true,fillColor:"000000",fillOpacity:0.2,stroke:true,strokeColor:"ff0000",strokeOpacity:1,strokeWidth:1,fade:true,alwaysOn:false,neverOn:false,groupBy:false,wrapClass:true,shadow:false,shadowX:0,shadowY:0,shadowRadius:6,shadowColor:"000000",shadowOpacity:0.8,shadowPosition:"outside",shadowFrom:false}})(jQuery);
        </script>
        <script type="text/javascript">$(function() {
                $('.map').maphilight({fade: false});
            });</script>
    </head>
    <body>
        <img class="map" src="http://www.rudyv.be/PilotePrive/F-GLVJ-cockpit.jpg" width="800" height="400" usemap="#Board">
        <map name="Board">
            <area href="#" shape="rect" coords="371,127,568,145" title="Témoins d'alarmes">
            <area href="#" shape="circle" coords="383,239,30" title="Anémomètre">
        </map>

    </body>
</html>
Voila essaye le !

Re: Texte en survolant zone image

par Herve_be » 10 sept. 2013, 17:41

La solution avec Jquery est exactement ce que je cherche, notamment l'exemple de la carte mondiale http://davidlynch.org/projects/maphilig ... world.html.
J'ai essayé : le tooltip s'affiche bien mais pas la modification de l'image.
Voici mon code
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
	<script type="text/javascript" src="../jquery.maphilight.min.js"></script>
	<script type="text/javascript">$(function() {
		$('.map').maphilight({fade: false});
	});</script>
</head>

<body background="DiapoCiel.jpg" text="#00FFFF">

<img class="map" src="F-GLVJ-cockpit.jpg" border="0" usemap="#Board" />

<map name="Board">
<area href="#" shape="rect" coords="371,127,568,145" title="Témoins d'alarmes">
<area href="#" shape="circle" coords="383,239,30" title="Anémomètre">
</map>

</html>
Qu'est-ce que j'ai mal fait ?

Re: Texte en survolant zone image

par Herve_be » 10 sept. 2013, 17:23

CSS ne marche pas sur les area/map il faut utiliser javascript avec omousehover onmouseout mais je ne sais pas comment faire.
Comment éclaircir ou agrandir ou entourer une zone d'une image et comment afficher un texte style infobulle en javascript ?

Re: Texte en survolant zone image

par juliette » 10 sept. 2013, 17:16

Bon, a 1ere vu, tu ne pourra pas le faire en css, la balise area n’étant pas censé contenir de contenu, un background ne s'affichera pas...
Voila une solution avec jquery: http://davidlynch.org/projects/maphilight/docs/

Re: Texte en survolant zone image

par juliette » 10 sept. 2013, 16:50

Ok alors tu peux peut être en css donner un background et une opacité/transparence en jouent avec hover
Est ce que tu arrive a mettre du css dans <area>

Re: Texte en survolant zone image

par Herve_be » 10 sept. 2013, 16:19

Si je comprends bien, ce widget permet de personnaliser l'infobulle.
Je souhaite afficher une bête infobulle mais aussi indiquer quelles sont les zones actives en modifiant leur aspect quand on passe dessus; je ne pense pas que ce widget le permette.

Re: Texte en survolant zone image

par juliette » 10 sept. 2013, 16:05

La fonction toolTip (pardon) ais avec jquery: http://jqueryui.com/tooltip/#custom-content
Regarde aussi sur la droite des exemples d'utilisations...

Re: Texte en survolant zone image

par Herve_be » 10 sept. 2013, 15:56

La question n'est pas de définir les points (j'ai facilement les coordonnées avec un logiciel de retouche d'image) mais de prendre l'action adéquate quand on survole la zone.
Ce que je pourrais faire, c'est une image différente pour chaque instrument du tableau de bord, et afficher l'image correspondante quand on survole l'instrument en question, mais ça va faire beaucoup d'images !

Je ne comprends pas "tool-type".
Dans l'exemple ci-dessus, le texte apparaît dans un tooltip (infobulle) en utilisant l'attribut "title" dans le tag "area"; le défaut est qu'il apparaît trop lentement.

Re: Texte en survolant zone image

par juliette » 10 sept. 2013, 15:00

Autant pour moi...
As-tu regardé avec tool-type, est ce que ca marche sur une area ?

Si non, pour définir facilement les points tu peut utiliser Gimp, il possède une option: Filtre > web > images cliquables

Re: Texte en survolant zone image

par Herve_be » 10 sept. 2013, 14:29

Bonjour,
Merci pour la réponse mais je pense que je me suis mal exprimé.
Je ne cherche pas une fonction Javascript qui exécute une action quand on passe sur la zone avec la souris
mais un moyen, probablement en Javascript, de mettre en évidence la zone survolée et d'afficher une infobulle.

Je pense qu'il faut invoquer la procédure Javascript ainsi
<area shape="poly/rect/circle" 
coords="x,y,z"
onMouseOver="script1" 
onMouseOut="script2>
Ce que je voudrais c'est que Script1 mette en évidence la zone définie par les coords du shape et qu'une infobulle apparaisse, et que Script2 affiche l'image originale, exemple

Image

Image

Mais je ne connais pas grand chose en Javascript et ne tiens d'ailleurs pas à ce que la soultion utilise Javascript !

Re: Texte en survolant zone image

par juliette » 10 sept. 2013, 08:18

Salut, voici un exemple de fonctionnement d la fonction hover: http://jquery.developpeur-web2.com/docu ... /hover.php

Texte en survolant zone image

par Herve_be » 09 sept. 2013, 21:48

Bonjour,
Je cherche un moyen d'afficher un texte explicatif en survolant certaines zones d 'une image.
J'ai trouvé un moyen simple; on peut voir un exemple ici http://www.rudyv.be/PilotePrive/Historique.php, la photo du tableau de bord tout en bas.
<img src="F-GLVJ-cockpit.jpg" border="0" title="" alt="" usemap="#Board" />
<map name="Board">
<area shape="circle" coords="383,239,30" title="Anémomètre">
</map>
En laissant la souris dans la zone dont les coordonnées sont définies, le texte "Anémomètre" apparaît bien mais
1) il faut laisser la souris dans la zone pendant "un certain temps" avant qu'il apparaisse;
2) rien n'indique que la zone en question est une zone sensible;
je voudrais par exemple que le pointeur change ou, mieux, que la zone en question change d'aspect quand on passe dessus.

Je pense que la solution existe probablement en JS, raison pour laquelle je mets cette question dans cette section.
Merci d'avance pour vos réponses.