Aller au contenu

afficher/masquer des calques sans JS


Nils

Sujets conseillés

Bonjour,

existe-t'il une méthode qui permette d'afficher un calque et en masquer un un autre sur un clic de souris sans avoir recours à JavaScript ?

J'ai vu l'action(?) hover, mais cela ne me convient pas, je ne veux pas une réaction au survol, mais bien à un clic (et je voudrais que mon calque reste affiché après le clic).

Merci. Nils.

Lien vers le commentaire
Partager sur d’autres sites

Salut !

je ne vois pas d'autre moyen que de le faire en javascript. Si tu utilise dreamweaver il y a un comportement (behavior) qui le fait trés bien : Show / Hide Layer ! En voici le code :

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
 if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
   document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
 else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
 var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
   d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
 if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
 var i,p,v,obj,args=MM_showHideLayers.arguments;
 for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
   if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
   obj.visibility=v; }
}
//-->
</script>
</head>
<body>

<div id="LeCalque" style="position:absolute; left:28px; top:97px; width:243px; height:179px; z-index:1; background-color: #FF9900; layer-background-color: #FF9900; border: 1px none #000000; visibility: hidden;">Mon calque</div>
<p><a href="javascript:;" onClick="MM_showHideLayers('LeCalque','','show')">Montrer</a> | <a href="javascript:;" onClick="MM_showHideLayers('LeCalque','','hide')">Cacher</a></p>
</body>
</html>

J'espere que ca peut t'aide ;)

A +

Lien vers le commentaire
Partager sur d’autres sites

_AT_A à Z Fleurs > le code macromédia que tu proposes est bourré de javascript :)

On peut effectivement faire ce genre de choses en CSS : http://www.alsacreations.com/articles/affiche/, mais ça ne fonctionnera qu'au survol effectivement.

Seul l'action javascript onclick permet de réagir au clic.

Modifié par Sibelius
Lien vers le commentaire
Partager sur d’autres sites

Merci AàZ Fleurs !

non, en fait je voulais me passer de js, mais il semblerais bien que c'est impossible pour ça !

merci pour le code. (mais pour l'instant, je travaille simplement dans un éditeur).

Et mes couches fonctionnent avec JS pour le moment.

merci encore, Nils.

.../...

Merci Sibelius, oui, j'avais bien mis le nez dans le code d'alsacréation, mais c'est bien du onclick que je voudrais et donc, js obligatoire ...

tant pis.

J'avais trouvé une solution avec des signets, mais impossible d'avoir un calque plus petit que son contenu sans assenceur ... C'est possible ?

merci.

Lien vers le commentaire
Partager sur d’autres sites

mais ça ne fonctionnera qu'au survol effectivement.

Ou alors en :active, il faudrait faire en sorte qu'il reste actif apres un clic de la souris.. lol

Yen a qu'on essayé, ils ont eu des problèmes :fou:

Lien vers le commentaire
Partager sur d’autres sites

Bref, impossible sans JS !

Et pour ce qui est d'une couche sans assenceur avec un contenu plus grand que sa taille, c'est envisageable ? (contenu "atteingnable" par signets)

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Si tu le veux sans ascenceur, pk mettre un contenu plus grand qui ne soit pas accessible ? ^o)

Enfin ça doit être possible en mettant ta div conteneur à la taille que tu veux, et un contenu en position absolute à l'intérieur de ce conteneur, ça ne jouera pas sur sa taille... A priori, parce que le CSS joue des tours, souvent :/

Lien vers le commentaire
Partager sur d’autres sites

Salut Sarc,

en fait, je ne veux pas d'assenceurs pour le look, et rendre le contenu accessible par des boutons appelant des signets.

Mais malheureusement, impossible de faire disparaitre ces satanés assenceurs.

Tout ça pour éviter l'appel de fonctions javascript pour cacher ou afficher des couches. Mais même en absolute, ça marche pas, la taille de la couche s'adapte à son contenu, et sinon, il faut les assenceurs...

Lien vers le commentaire
Partager sur d’autres sites

ok !

mais ???, c'est quoi une iframe ? c'est une fausse frame ? Pourquoi c'est moche au niveau du code ?, ça marche pas avec tous les navigateurs ?

Lien vers le commentaire
Partager sur d’autres sites

Je m'y connais pas du tout trop en ça, mais bon :/

Jte conseille de rechercher :P

Mais les bannières de pubs sont dans des iframes, et quand je joue de la molette à l'intérieur, la bannière monte (j'ai essayé sur le hub lol :D)...

Je crois que c'est pas référencé par contre.

Mais j'attends que les pros confirment !

Lien vers le commentaire
Partager sur d’autres sites

Merci Sarc, mais elle est où la banière de pub sur laquelle t'as essayé ?

(Désolé Dan, la pub est bien cachée sur le Hub, ou c'est moi qui la vois plus !)

Lien vers le commentaire
Partager sur d’autres sites

re, je regrette mais je dois avoir les yeux ... :blink: , je n'y ai pas trouvé de banière de pub qui défilent avec la molette et sans assenceur ... :unsure:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...