11550 sujets

JavaScript, DOM et API Web HTML5

bonjour,

ca fait quelques temps que je me suis mis au js, et je voulais donc tenter d'utiliser le tuto de jquery menu accordéon sur alsacréations, pour m'aider a en developper un autre, mais le truc c'est que pour mon menu ca a pas du tout marché, donc pour voir si ca allait marché, j'ai fait un bete copier/coller du tuto et ca a meme pas marché ( je comprend vraiment pas ) , ci dessous, je met la page html + css


<html>
<head>

	<link rel="stylesheet" media="screen" type="text/css" title="menu" href="test.css" />
	
	<script type="text/javascript" src="jquery-1.3.2.js"></script>
	<script type="text/javascript"> 

$(document).ready( function () { 
    // On cache les sous-menus : 
    $(".navigation ul.subMenu").hide(); 
    // On sélectionne tous les items de liste portant la classe "toggleSubMenu" 
 
    // et on remplace l'élément span qu'ils contiennent par un lien : 
    $(".navigation li.toggleSubMenu span").each( function () { 
        // On stocke le contenu du span : 
        var TexteSpan = $(this).text(); 
        $(this).replaceWith("<a href="" title="Afficher le sous-menu">" + TexteSpan + "<\/a>") ; 
    } ) ; 
 
    // On modifie l'évènement "click" sur les liens dans les items de liste 
    // qui portent la classe "toggleSubMenu" : 
    $(".navigation li.toggleSubMenu > a").click( function () { 
        // Si le sous-menu était déjà ouvert, on le referme : 
        if ($(this).next("ul.subMenu:visible").length != 0) { 
            $(this).next("ul.subMenu").slideUp("normal"); 
        } 
        // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
        else { 
            $(".navigation ul.subMenu").slideUp("normal"); 
            $(this).next("ul.subMenu").slideDown("normal"); 
        } 
        // On empêche le navigateur de suivre le lien : 
        return false; 
    });     
 
 
} ) ; 
// --> 

	
	
	</script>

	
</head>
<body>
	

<ul class="navigation"> 
    <li><a href="#" title="Aller à la page 1">Item 1</a></li> 
 
    <li class="toggleSubMenu"><span>Item 2</span> 
        <ul class="subMenu"> 
            <li><a href="#" title="Aller à la page 2.1">Item 2.1</a></li> 
 
            <li><a href="#" title="Aller à la page 2.2">Item 2.2</a></li> 
            <li><a href="#" title="Aller à la page 2.3">Item 2.3</a></li> 
 
        </ul> 
    </li> 
    <li class="toggleSubMenu"><span>Item 3</span> 
        <ul class="subMenu"> 
 
            <li><a href="#" title="Aller à la page 3.1">Item 3.1</a></li> 
            <li><a href="#" title="Aller à la page 3.2">Item 3.2</a></li> 
 
        </ul> 
    </li> 
    <li><a href="#" title="Aller à la page 4">Item 4</a></li> 
 
</ul>



</body>







>.navigation { 
      margin: 0; 
      padding: 0; 
      list-style: none; 
      background: #000; 
      color: #fff; 
      width: 200px; 
      font: 1.2em "Trebuchet MS", sans-serif; 
      } 
   .navigation a, .navigation span { 
      display: block; 
      padding: 4px 10px; 
      color: #fff; 
      text-decoration: none; 
      background: #000 url(menu-item.png) left bottom no-repeat; 
      } 
   .navigation .toggleSubMenu a, .navigation .toggleSubMenu span { 
      background-image: url(menu-item-deroule.png); 
      } 
   .navigation .open a, .navigation .open span { 
      background-image: url(menu-item-enroule.png); 
      } 
   .navigation a:hover, .navigation a:focus, .navigation a:active { 
      text-decoration: underline; 
      } 
   .navigation .subMenu { 
      font-size: .8em; 
      background: #ccc url(subMenu.png) 0 0 repeat-x; 
      font-size: .9em; 
      margin: 0; 
      padding: 0; 
      border-bottom: 1px solid #666; 
      } 
   .navigation ul.subMenu a { 
      background: none; 
      padding: 3px 20px; 
      }



j'ai bel et bien mon fichier jquery ou y'a l'index.html + css

et voici ce que ca m'affiche sur mon navigateur ci dessous


http://img188.imageshack.us/img188/573/wtfxh.jpg

quelqu'un pourrait me dire ou est l'erreur ? parce que je vois vraiment pas..
comment ca ne pourrait pas marché alors que j'ai fait un bete copier/coller
je capte pas là..
merci

edit: je viens enfin de trouver mon erreur..
je voulais savoir, il est possible avec le tuto de jquery menu accordéon de faire ceci
-> http://lapurificadora.com/
c'est ce que je veux obtenir, j'ai déja fait le fond avec les menu + rollover
Modifié par Dyphen (04 Nov 2009 - 11:25)
Bonjour,

Je ne suis pas persuadé que tu parviennes sans difficultés à réaliser ce que tu souhaites en partant du tutoriel de Thomas.
Il existe moultes scripts sur la toile qui te permettront d'y parvenir plus "facilement"
Phatfusion, construit avec la librairie Mootools, est l'un des premiers scripts à avoir proposé ce type de menu "Flash like", il a été porté sous la librairie Jquery par Christophe Deliens (ça tombe bien, non ?).
Tu devrais pouvoir réaliser ce que tu souhaites en te basant sur ce dernier et en adaptant à ton propre besoin (Je t'encourage bien évidemment à parfaire tes connaissances sur le langage javascript et sur les différents frameworks disponibles; ce qui te permettra à terme de faire (et de proposer) tes propres scripts Smiley cligne )

En espérant que cela répond à ton besoin,
Cdt,
Sylvain
re , ton lien m'a énormément aidé, ( j'ai utiliser celui la : http://ldbglobe.fried-rice.net/public/2007/06/jQuery.imageMenu/ )
je te dois un grand merci lol mais maintenant j'ai un autre problème, je te montre

http://img177.imageshack.us/img177/8854/wtfcq.jpg

le slide marche bel et bien sur mon menu now mais 2 problèmes se pose, impossible de rapprocher le menu de l'image y'a toujours un écart et je veux que le menu slide sur le fond en fait

comme sur le site http://lapurificadora.com/

mon code css et html ci dessous ( je met pas le code js vu que j'y ai pas touché )




<link rel="stylesheet" media="screen" type="text/css" title="menu" href="test_jquery.css" />	
	<script type="text/javascript" src="jquery-1.3.2.js"></script>  <!-- appel de jquery -->
	<script type="text/javascript" src="jquery.imageMenu.js"></script>

	
	
	<script type="text/javascript">
$(document).ready(function()
{
    $('#menu').ImageMenu({'saveOnClick':true,'keepOpen':false,'init':2,'mouseover':myMouseOver,'mouseout':myMouseOut});

    /* Options:
     * 'items': (string) selecteur ciblant les éléments du menu (defaut = 'li')
     * 'extendBy': (int) élargissement prévu pour le menu ouvert - en pixel (defaut = 50),
     * 'init' : (int) index de l'élément à ouvrir par défaut -1 si aucun (defaut = -1),
     * 'keepOpen' : (boolean) Indique si l'on laisse les menu ouvert au survol (defaut = false),
     * 'saveOnClick' : (boolean) Indique si l'on garde ouvert un menu cliqué - inutile si keepOpen est à "true" (defaut = false),
     * 'mouseover' : (function) associez une fonction à l'ouverture d'un menu (defaut = function(){}),
     * 'mouseout' : (function) associez une fonction à la fermeture d'un menu (defaut = function(){}),
     * 'click' : (function) associez une fonction lors d'un click sur un menu (defaut = function(){}),
     */

    // gestion personnalisé de la superposition d'un autre visuel
    // on ajoute ici un aspect "flou/net" sur le menu

    function myMouseOver(elems,options) {
        $('.menuOptionHover',elems).stop();
        $('.menuOptionHover',elems).animate({'opacity':1},'fast');
    }

    function myMouseOut(elems,options) {
        console.debug(elems);
        $('.menuOptionHover',elems).stop();
        $('.menuOptionHover',elems).animate({'opacity':0},'fast');
    }
});
	</script>


	

	
</head>


<body>

	<!-- Background homepage " Le dormeur du val - Hotel " -->
	

	<table width="100%" cellspacing="0" cellpadding="0">

	<tr>
		<td id="background_homepage">
			<img src="images/image-de-fond.jpg" alt="image de fond" /></span>
		</td>

	<!-- Fin -->
	
	
	
	<!-- Menu rollover -->
		
		<td id="menu">
		

		<li id="accueil" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-accueil-couleur.jpg" onmouseout="src='Images/Bandeau-accueil-couleur.jpg'" onmouseover="src='Images/Bandeau-accueil-blanc.jpg'"/></span></a>
		</li>
		
		
		<li id="visite" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-visite-couleur.jpg" onmouseout="src='Images/Bandeau-visite-couleur.jpg'" onmouseover="src='Images/Bandeau-visite-blanc.jpg'"/></span></a>
		</li>
		
		<li id="environnement" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-environnement-couleur.jpg" onmouseout="src='Images/Bandeau-environnement-couleur.jpg'" onmouseover="src='Images/Bandeau-environnement-blanc.jpg'"/></span></a>
		</li>
		
		<li id="revue_presse" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-revue-de-presse-couleur.jpg" onmouseout="src='Images/Bandeau-revue-de-presse-couleur.jpg'" onmouseover="src='Images/Bandeau-revue-de-presse-blanc.jpg'"/></span></a>
		</li>
		
		<li id="blog_notes" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-blog-notes-couleur.jpg" onmouseout="src='Images/Bandeau-blog-notes-couleur.jpg'" onmouseover="src='Images/Bandeau-blog-notes-blanc.jpg'"/></span></a>
		</li>
		
		<li id="contact" class="menuOption">
		<a href="#"><span class="menuOptionHover"><img src="Images/Bandeau-contact-couleur.jpg" onmouseout="src='Images/Bandeau-contact-couleur.jpg'" onmouseover="src='Images/Bandeau-contact-blanc.jpg'"/></span></a>
		</li>
		
		</td>
		
	</tr>
</table>

</body>




j'ai tenter en table parce que en div pas moyen d'y arriver , et voici mon css


body {
background-color: black;
}
img {
display: block;
float: left;
}
#menu {
        width:199px;
		height: 768px;
        list-style:none;
        overflow:hidden;
		float: left;
}
#accueil {
width: 30px;
height: 768px;								
}
#visite {
width: 49px;
height: 768px;
}
#environnement  {
width: 27px;
height: 768px; 
}
#revue_presse{
width: 34px;
height: 768px;
}
#blog_notes {
width: 22px;
height: 768px; 
}
#contact {
width: 37px;
height: 768px;
}
#menu li {
		float: left;
		text-align: center;		
		
}
#menu li .menuOptionHover{
        display:block;
        width:100%;
        height:100px;
        text-indent:-8000px;
}
#accueil { background:url(images/Bandeau-accueil-couleur.jpg); }
#visite { background:url(images/Bandeau-visite-couleur.jpg); }
#environnement { background:url(images/Bandeau-environnement-couleur.jpg); }
#revue_presse { background:url(images/Bandeau-revue-de-presse-couleur.jpg); }
#blog_notes { background: url(images/Bandeau-blog-notes-couleur.jpg); }
#contact { background: url(images/Bandeau-contact-couleur.jpg); }
#menu li#accueil .menuOptionHover { background:url(images/Bandeau-accueil-couleur.jpg); }
#menu li#visite .menuOptionHover { background:url(images/Bandeau-visite-couleur.jpg); }
#menu li#environnement .menuOptionHover { background:url(images/Bandeau-environnement-couleur.jpg); }
#menu li#revue_presse .menuOptionHover { background:url(images/Bandeau-revue-de-presse-couleur.jpg); }
#menu li#blog_notes .menuOptionHover { background: url(images/Bandeau-blog-notes-couleur.jpg); }
#menu li#contact .menuOptionHover { background: url(images/Bandeau-contact-couleur.jpg); }



j'ai réussi a le rapprocher au maximum , y'a toujours un écart de 30px , impossible de coller le menu a l'image
Modifié par Dyphen (04 Nov 2009 - 21:53)
Pour info le décallage était dû aux marges par défaut da la liste non ordonnée (Astuce)
@Dyphen: si tu considères ce sujet comme [résolu] merci de l'indiquer dans le titre de ton sujet en éditant ton premier message (tout autre soucis devra faire l'objet de l'ouverture d'un autre sujet) Smiley cligne

Cdt,
Sylvain