28173 sujets

CSS et mise en forme, CSS3

Bonjour les artistes Smiley smile

et d'abord merci à ce site d'exister, parce que vraiment, il m'a bien aidé!

DOnc voilà, mon petit menu en css fonctionne déjà pas mal, mais lorqu'on clique sur un lien du sous-menu, au chargement de la page correspondante, le sous-menu en question disparait ce qui m'empêche, notamment, d'y afficher la page active.

Des solutions?!

Le site du menu en question : www.safranum.com

D'avance merci pour vos suggestions et belle journée!

Celinita
Hmm... tu as un script qui va masquer l'ensemble des sous-menus automatiquement à chaque chargement de page...

Un moyen serait de faire un autre script qui passe en revue tout les liens de ton menu, s'il en trouve un dont le href est égal à l'adresse de la page en cours il affiche le sous-menu correspondant (dans ton cas le parentNode.parentNode.parentNode)

A vue de pif, j'ai pas testé mais ca ressemblerai à un truc comme ça..


function showActualSubMenu() {
     var a = document.getElementById("menu").getElementsByTagName("a");
     var z = a.length;
     var url = document.location.href;
     var subMenu;
     while (z--) {
	if (a[z].href==url) {
	     subMenu = a[z].parentNode.parentNode.parentNode;
	     if (subMenu.nodeName=="dd") subMenu.style.display = "block";
	}
     }					
}

Bien sur à charger après le premier chargement de montre() dans le onload (et uniquement là)


Edit : Il aime pas les [ i] dans mon code, remplacé par z
Modifié par Tymlis (20 Apr 2007 - 12:13)
Salut Tymlis, et merci pour ta réponse rapide.

Seulement voilà, ces belles fonctions je les ai prises au tutorial Alsa mais moi... bein je n'y comprends pas grand chose Smiley decu

Du coup j'ai essayé ta proposition, ça n'a pas marché, et je ne vois pas ce que je pourrais changer pour que ça marche... puisque je n'ai pas encore percé les mystères de ce genre de fonctions.

Si tu avais la bonté d'y rejeter un oeil pour me dire ce qui peut clocher, ou si tu as des liens qui me permettraient d'y voir plus clair et de me casser moi-même la tête là-dessus...

Déjà grand merci

Cel
Tu a ajouté ma fonction dans ta balise de script après la déclaration de montre() ?

Normalement si tu modifie le window.onload pour lui dire de d'abord tout masquer puis afficher le sous menu de la page en cours ca devrait aller (sous reserve que j'ai pas écrit de bétise dans mon script rapide).

Donc en gros, il faut que tu remplace
window.onload = montre

par
window.onload= function() { montre(); showActualSubMenu() }



C'est à dire au final :

	<!--
	window.onload= function() { montre(); showActualSubMenu() }
	//Ca, ça masque tous les sous-menus puis ca affiche un sous menu spécial s'il est précise
	function montre(id) {
	var d = document.getElementById(id);
		for (var i = 1; i<=10; i++) {
			if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
		}
	if (d) {d.style.display='block';}
	}
	
	//Ca, ça passe en revue tous les liens des sous-menus, si ca trouve un lien qui amene vers la page actuelle, ca ouvre le sous-menu qui va bien
	function showActualSubMenu() {
	    var a = document.getElementById("menu").getElementsByTagName("a");
	 var z = a.length;
	 var url = document.location.href;    
	 var subMenu;
	 while (z--) {
		if (a[z].href==url) {
		subMenu = a[z].parentNode.parentNode.parentNode;
		if (subMenu.nodeName=="dd") subMenu.style.display = "block";
	}
}					
				
	
	//-->


Tiens moi au courant si améliore le truc (ou même si ca l'empire ^^)
re Smiley smile

bein au début ça marchait pas du tout (tous les sous-menius restaient affichés), j'ai trouvé qu'il manquait une } mais là les sous-menus ne s'affichent pas au début, mais le sous-menu conerné ne reste pas affiché quand on a clické Smiley decu

J'en sais rien mais ne serait-ce pas du au mélange des et des [z]?! je n'ai pas compris l'histoire de "il n'aime pas les [i]..."


et merci de prendre le temps de m'aider, c cool!
[/i]