11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je ne sais pas si ce que je veux est possible car je n'ai pas trouvé grand chose dans ce domaine. Je travaille actuellement sur un site web et l'objectif est de le modifier en touchant le moins possible le code de base, uniquement le template (si biensur ce que je veux faire n'est pas possible en CSS alors j'irais tout de même y toucher bien entendu). C'est pourquoi j'ai voudrais savoir s'il est possible lors d'un clic sur un élément de ma page, de faire apparaitre un bloc div grâce à CSS.

Par exemple si j'ai le menu suivant:

<h3>Menu1</h3>
<div id="menu1">
blabla
</div>


Le bloc div est ici invisible par défaut, mais apparaitra lors d'un clic sur "Menu1".
Je sais que c'est faisable très facilement en JavaScript et c'est d'ailleurs ma deuxième option si celle si ne fonctionne pas mais en CSS? J'ai bien entendu pensé au ":hover" mais c'est au passage de la souris qu'il apparait, pas au clic.

Merci à ceux qui se pencheront sur mon cas.

Edit: En attendant j'ai choisi une solution avec hover qui fonctionne très bien et rend pas si mal, mais je suis toujours preneur.
Modifié par Lord Yu (05 Oct 2009 - 16:13)
Bonjour,

C'est impossible de le faire en CSS (puisque CSS s'occupe de présentation et non de comportement (le clic)). Par contre c'est assez simple à faire en JavaScript.

function afficher(object_id){
 	var obj=document.getElementById(object_id)	
	if(obj.style.display == 'block') obj.style.display='none'
	else obj.style.display='block'
}

Bien sûr, au chargement de la page, les éléments doivent tous être affichés, puis masqués en JavaScript (pour qu'ils restent accessibles lorsque JS est désactivé, bloqué, buggé).
En css, mis à part le :hover, il n'y pas de propriété d'interaction. La réponse sera donc non. Peut-être que ce sera avec le css4 ou css5.
Mais pourquoi tu ne veux pas de Javascript ? On fait des trux assez sympa avec Smiley lol
En fait j'ai souvent fait ça en JavaScript sur des menus pour mes sites perso et c'est vrai que je n'ai pas trouvé mieux pour l'instant. Là je suis en entreprise et on m'a donné pour contrainte d'utiliser dans la mesure du possible le CSS pour faire les modifications demandées.

Merci pour vos réponses Smiley smile
Savoir dire ce qui est possible et ne l'est pas. Savoir expliquer pourquoi ce n'est pas possible et sevoir dire "non", ça fait aussi partie du boulot.