Bonjour à toutes et tous,
je suis en train de faire un site et je voudrais faire en sorte que mon menu de gauche reste bloqué sur la partie du menu sur laquelle j'ai cliqué lorsque je change de page.
Par exemple, lorsque je clique sur le sous-menu "théâtre", j'aimerai que le menu relatif à théâtre reste ouvert (tu comprends ??) lors du changement de page.
Voici mon js :
Code :
- function afficheMenu(obj){
- var idMenu = obj.id;
- var idSousMenu = 'sous' + idMenu;
- var sousMenu = document.getElementById(idSousMenu);
- /*****************************************************/
- /** on cache tous les sous-menus pour n'afficher **/
- /** que celui dont le menu correspondant est cliqué **/
- /** où 4 correspond au nombre de sous-menus **/
- /*****************************************************/
- for(var i = 1; i <= 5; i++){
- if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){
- document.getElementById('sousmenu' + i).style.display = "none";
- }
- }
- if(sousMenu){
- //alert(sousMenu.style.display);
- if(sousMenu.style.display == "block" ){
- sousMenu.style.display = "none";
- }
- else{
- sousMenu.style.display = "block";
- }
- }
- }
|
Ensuite le code pour le menu :
Code :
- <div id="menu">
- <?php
- require("identification/connexion_sql.php" );
- // on attaque le php ici
- // dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
- $req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête" );
- $rep1 = mysql_query($req1);
- while($row1 = mysql_fetch_array($rep1)) {
- // on affiche le menu de niveau 1
- echo "<div class=\"menu\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this)\"><a href=\"#\">".$row1['lib_menu']."</a></div><br>";
- // ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien
- $req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête" );
- $rep2=mysql_query($req2);
- $nb2=mysql_num_rows($rep2);
- if (isset($nb2) && $nb2>0) {
- echo "<div id=\"sousmenu".$row1['id_menu']."\" style=\"display:none\"><br>";
- while ($row2=mysql_fetch_array($rep2)) {
- $num = $row2['id_menu'];
- $lib = htmlentities($row2['lib_menu']);
- print '<div class="sousmenu"><a href="contenu.php?num='.$num.'&lib='.$lib.'">'.$lib.'</a></div><br>';
- }
- echo "</div>";
- }
- }
- ?>
- </div>
|
Puis le .ccs relatif au menu:
Code :
- #menu{
- width:150px;
- }
- .menu, .sousmenu{
- text-align: right;
- }
- .menu{
- height:18px;
- width:150px;
- color:#fff;
- padding-bottom: 10px;
- top:0;
- font-family:arial,sans-serif;
- font-size:12px;
- text-decoration:none;
- }
- .sousmenu{
- height:14px;
- width:170px;
- padding: 0px;
- color:#ffffff;
- text-align: right;
- }
- .menu a{
- display:block;
- width:100%;
- height:100%;
- color:#fff;
- font-family:arial,sans-serif;
- font-size:12px;
- text-decoration:none;
- margin-top: 0;
- }
- .sousmenu a{
- display:block;
- width:100%;
- height:100%;
- color:#666666;
- font-family:Garamond;
- font-size:18px;
- text-decoration:none;
- }
- .sousmenu a:hover, .sousmenu a:active, .sousmenu a:focus{
- color:#ffffff;
- }
|
Le code de la page php sur laquelle je fais les tests:
Code :
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
- <head>
- <title>Création d'un design étape par étape - Etape n°1 : Le code xhtml</title>
- <meta http-equiv="Content-Style-Type" content="text/css" />
- <meta http-equiv="Content-Language" content="fr" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link rel="stylesheet" href="css/copie_style_menu.css" type="text/css" />
- <link rel="stylesheet" href="css/contenu.css" type="text/css" />
- <script type="text/javascript" src="js/copie_functions.js"></script>
- <script type="text/javascript" src="js/functions_contenu.js"></script>
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
- </head>
- <body>
- <div id="conteneur">
- <div id="entete"></div>
- <div id="conteneur2">
- <div id="cellulegauche"><?php include("menu/copie_menu.php" ) ?></div>
- <div id="contenucel1">
- <div class="titre_lien"><?php
- $titre = $_GET['lib'];
- print''.$titre.''; ?></div>
- <?php
- include ("requetes/requete_lien.php" );
- ?>
- </div>
- <div id="contenucel2"></div>
- <div id="contenucel3" class="placeholder"></div>
- <script>
- $("a.lien" ).click(function() {
- loadContent( $(this).attr('href') );
- return false;
- });
-
- function loadContent(page){
- $.ajax({
- url: page,
- success: function(data) {
- $('.placeholder').html(data);
- }
- });
- }
- </script>
- </div>
- </div>
- </body>
- </html>
|
[color=#EF0F37]A savoir que le code
Code :
- <script>
- $("a.lien" ).click(function() {
- loadContent( $(this).attr('href') );
- return false;
- });
-
- function loadContent(page){
- $.ajax({
- url: page,
- success: function(data) {
- $('.placeholder').html(data);
- }
- });
- }
- </script>
|
[/color]
n'a rien à voir avec le menu de gauche. C'est unet fonction qui me permet d'afficher dans la zone blanche de droite un texte lorsque je clique sur un lien appartenant à la zone blanche du milieu.
Et enfin, le lien vers le site en test : Site de test
J'espère que ces données seront suffisantes, sinon n'hésites-pas à me dire ce qu'il manque.
Merci beaucoup pou ton aide et bonne soirée.
Message édité par quaresma le 31-10-2010 à 23:03:09