Salutations,
n'étant pas bon du tout en JS (je n'y comprends rien du tout), un contact m'a pondu le code d'un menu déroulant vertical basé sur un moteur JS et JQUERY.
Je lui avait demandé de faire en sorte que le premier sous-menu soit par défaut décollapsé. Mais je me rends compte que si la fenêtre est redimensionné en hauteur, cela créé un ascenseur immonde par dessus le menu.
Je ne veux pas trop l'enquiquiner plus avec mes pbs, surtout qu'il voudrait que je fasse en fait un menu horizontal. Je neveux pas car tout le monde le fait, et je n'aime pas les sites tout en vertical...
Le menu actuel est visible ici
Voici un bout de code du menu pour vous aider à comprendre :
Un bout du CSS correspondant :
Et surtout le fichier JS lié au menu :
Pouvez-vous m'aider ?
Je crois avoir compris en lisant ce code JS que l'ascenseur s'affiche obligatoirement si la fenetre est trop petite en hauteur, mais du coup c'est moche... N'existe t'il pas une autre solution ?
Déjà, si je pouvais faire en sorte que le sous-menu decollapsé par défaut puisse être collapsé si la fenêtre est trop petite en hauteur, cela me ferait gagner de la place... (class="active" il me semble).
Merci de vos aides...
n'étant pas bon du tout en JS (je n'y comprends rien du tout), un contact m'a pondu le code d'un menu déroulant vertical basé sur un moteur JS et JQUERY.
Je lui avait demandé de faire en sorte que le premier sous-menu soit par défaut décollapsé. Mais je me rends compte que si la fenêtre est redimensionné en hauteur, cela créé un ascenseur immonde par dessus le menu.
Je ne veux pas trop l'enquiquiner plus avec mes pbs, surtout qu'il voudrait que je fasse en fait un menu horizontal. Je neveux pas car tout le monde le fait, et je n'aime pas les sites tout en vertical...
Le menu actuel est visible ici
Voici un bout de code du menu pour vous aider à comprendre :
(...)
<nav id="navMain">
<ul>
<li>
<a href="index.php" title="Association WDA">Accueil</a>
</li>
<li class="active"> <!-- Sous-Menu ouvert par defaut - Voir menu.js !-->
<a href="#">Association</a>
<ul>
<li>
<a href="index.php?page=descri" title="Qui sommes-nous ?">Qui sommes-nous ?</a>
</li>
(...)
Un bout du CSS correspondant :
(...)
/* ------------------------------- */
/* MENU */
#navMain {
max-width: 150px;
position: relative;
width: 100%;
margin: 0 auto;
font-family: Verdana, Arial;
}
#navMain ul, #navMain li, #navMain a {
position: relative;
padding: 0;
margin: 0;
border: 0;
text-decoration: none;
}
#navMain ul li {
display: block;
}
#navMain ul li a {
display: block;
color: #FFFFFF;
padding: 10px 10px;
position: relative;
text-shadow: 2px 1px 1px #000000; /* Ombrage */
/* text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); */ /* Ombrage initial */
}
(...)
Et surtout le fichier JS lié au menu :
// ------------------------------------------------
// jquery.dropdown.js (depends on: jquery.hoverIntent.js)
// ------------------------------------------------
$.fn.dropdown = function(options) {
var defaults = {};
var opts = $.extend(defaults, options);
// Apply class=hasSub on those items with children
this.each(function() {
$(this)
.find("li")
.each(function() {
if ($(this).find("ul").length > 0) {
$(this).addClass("hasSub");
}
});
});
return this;
};
// ------------------------------------------------
// ------------------------------------------------
// MENU MAIN
$(function() {
var navMainId = "#navMain";
// -------------------
// Calling the jquery dropdown
$(navMainId).dropdown();
// -------------------
//Sous-Menu ouvert par defaut
$(navMainId + " ul > li.active").addClass("open");
$(navMainId + " ul > li.active > ul").slideDown("fast");
// -------------------
// ouverture/fermeture sous-menu (click/touch)
$(navMainId + " ul > li").on("click", function(event) {
event.stopPropagation(); /* important */
$(this)
.parent()
.find("li:not(:hover)")
.removeClass("open");
$(this).toggleClass("open");
$(this)
.parent()
.find("li:not(:hover) ul")
.slideUp("fast");
if ($(this).hasClass("hasSub")) {
$(this)
.children("ul")
.slideToggle("fast");
}
});
// -------------------
// on desactive les liens des Menus AVEC Sous-Menus
// (obligatoire pour Tablettes TACTILES / Smartphones)
$(navMainId + " > ul > li.hasSub > a").on("click", function(event) {
event.preventDefault();
});
// -------------------
});
// ------------------------------------------------
// ------------------------------------------------
// Scrollbar si menu plus grand que la hauteur de fenêtre (interessant pour MENU FIXE)
$(window).on("load resize", function() {
var navFixed = "#menu"; // menu FIXE
$(navFixed).css({"max-height":$(window).height()+"px"}).css({ "overflow-y": "auto" });
});
// ------------------------------------------------
Pouvez-vous m'aider ?
Je crois avoir compris en lisant ce code JS que l'ascenseur s'affiche obligatoirement si la fenetre est trop petite en hauteur, mais du coup c'est moche... N'existe t'il pas une autre solution ?
Déjà, si je pouvais faire en sorte que le sous-menu decollapsé par défaut puisse être collapsé si la fenêtre est trop petite en hauteur, cela me ferait gagner de la place... (class="active" il me semble).
Merci de vos aides...