Menu CSS vers le haut

Résolu
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 - 16 juil. 2008 à 17:05
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 - 16 juil. 2008 à 18:53
Bonjour à tous,
j'aurais une petite question à vous poser :
je suis entrain de faire un site portfolio et je me suis dis que je vais faire comme si c'était un écran d'ordinateur portable, donc du coup j'ai fait la page et là je suis sur le menu "démarrer" qui donc s'ouvrira du bas vers le haut.
le seul problème par défault un menu css avec ces éléments :

<div id="menu" style="height: 20px; width: 65px;">
        <dl>
          <dt onMouseOver="javascript:montre('smenu1');" onMouseOut="javascript:montre('');">&nbsp;</dt>
          <dd id="smenu1" onMouseOver="javascript:montre('smenu1');" onMouseOut="javascript:montre('');">
            <li class="opaque" ><a href="#">Profil</a></li>
              <li class="opaque" ><a href="#">Dessins et Croquis</a></li>
              <li class="opaque" ><a href="#">Créations et Retouches</a></li>
              <li class="opaque" ><a href="#">Déssins véctoriels</a></li>
              <li class="opaque" ><a href="#">Animations Flash</a></li>
              <li class="opaque" ><a href="#">Photographies</a></li>
              <li class="opaque" ><a href="#">Vidéos</a></li>
              <li class="opaque" ><a href="#">Contactez moi</a></li>
            </ul>
          </dd>
          </dt>
        </dl></div>


et en CSS
dl, dt, dd, ul, li {
	margin: 0;
	padding:0;
	list-style-type: none;
}
#menu {
	position: absolute;
	z-index:100;
	width: 65px;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight:bold;
	font-size:11px;
}
#menu dl {
	float: left;
	width: 160px;
	position:relative;
}
#menu dt {
	display:block;
	height:20px;
	width:65px;
	cursor: pointer;
	text-align: left;
	background-image: url(../images/btn_menu.png);
	background-position:top;
	color:#000000;
	background-repeat: no-repeat;
	border: 0px solid #996600;
	vertical-align:middle;
	bottom:0;
     }
}
#menu dd {
	border-left: 1px solid gray;
	border-right: 1px solid gray;
	border-bottom: 1px solid gray;
	position:absolute;
}
#menu li {
	text-align: center;
	background: #fff;
	height:25px;
	padding-top:0px;
}
#menu li a {
	color: #000;
	text-decoration: none;
	display: block;
	height: 100%;
	border: 0 none;
	padding-top:5px;
}
#menu dt a {
	color: #ffffff;
	text-decoration: none;
	display: block;
	height: 100%;
	border: 0 none;
	padding-top:5px;
}
#menu li a:hover {
	background: #000000;
	color:#FFFFFF;
	vertical-align:middle;
	height:20px;
	padding-top:5px;
}
#menu dt a:hover {
	background-position:bottom;
	background-repeat: no-repeat;
	text-decoration:none;
}
#menu dt:hover {
	background-position:bottom;
	background-repeat: no-repeat;
	text-decoration:none;
}
a {text-decoration: none;
color: black;
color: #222;
}


en mettant le bottom:0 le bouton se met tout en bas de la page et ça je le veux pas et de plus en relative celà me déforme ma page et de toute façon le menu s'ouvre vers le bas quand même.

j'aimerais savoir quel chemin prendre pour résoudre ce problème.

je vous remerci d'avance

le site sans le menu installé est ici => http://metllicak.free.fr (ce n'est qu'un serveur de teste)
A voir également:

6 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
16 juil. 2008 à 17:18
Bonjour.

#menu dt {
	[...]
     }
}

Tu fermes deux fois ta balise.

- Dans le menu, tu fermes un UL que tu n'as pas ouvert. Et j'ai du mal à voir l'intérêt d'utiliser des listes à l'intérieur d'une liste de définitions.

- Tu ne montres pas le Javascript.

- Je ne comprends pas : tu veux mettre ton menu où, au juste ?
0
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 34
16 juil. 2008 à 17:29
merci j'ai corrigé le CSS

désolé voici donc le .js

<script type="text/javascript">
<!--
window.onload=montre;
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';}
}
//-->
</script>


pour l'emplacement du menu je viens de mettre à jour ma page de teste à l'adresse que j'ai donné plus haut vous pouvez le voir en survolant le bouton de menu du pc en bas à gauche
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
16 juil. 2008 à 18:08
Dans le #menu dd, il suffit de rajouter top:-200px;
Avec 200px = 25 (hauteur des lignes du menu dans le CSS) * 8 (nombre de lignes du menu).

Sinon, tu pourrais améliorer un peu ton code, parce que là j'ai l'impression que tu accumules des objets inutiles.
Par exemple :
- Suppression du <div id="menu">, en identifiant le <dl id="menu">
- Suppression des <li class="opaque" >, en conservant les <a> et en leur donnant dans le CSS la propriété display: block; (entre autres).
tu te retrouverais, en gros, avec :
<dl id="menu">
	<dt onMouseOver="javascript:montre('smenu1');" onMouseOut="javascript:montre('');">Menu</dt>
	<dd id="smenu1" onMouseOver="javascript:montre('smenu1');" onMouseOut="javascript:montre('');">
		<a href="#">Profil</a>
		<a href="#">Dessins et Croquis</a>
		<a href="#">Créations et Retouches</a>
		<a href="#">Déssins véctoriels</a>
		<a href="#">Animations Flash</a>
		<a href="#">Photographies</a>
		<a href="#">Vidéos</a>
		<a href="#">Contactez moi</a>
	</dd>
	</dt>
</dl>

Ce qui est quand-même un peu plus clair (ou mieux, en utilisant une liste plutôt qu'une liste de définitions)...
0
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 34
16 juil. 2008 à 18:20
Merci beaucoup pour tes conseils je viens d'optimiser mon code html et tut fonctionne bien sauf sur ma dame noire j'ai appelé IE : je te laisse regarder http://metllicak.free.fr/

juste une question : en actualisant la page on peut remarquer que le menu apparait très rapidement avant de se mettre en hide, est ce qu'il est possible d'éviter ceci car mon js a l'air d'être correcte.

merci encore pour ton aide car depuis ce matin je suis en galère sur ce menu sans y arriver
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
16 juil. 2008 à 18:35
Je n'ai pas IE sous la main, donc pas possible de tester...

Pour le menu qui est visible au chargement de la page :
C'est le JS qui fait ça. En fiat, le code est fait pour que, au ca soù n visite ton site sans avoir le JS activé, on puisse voir le menu.
La solution, si tu acceptes de pénaliser les utilisateurs ne disposant pas de JS, c'est de fixer dans le CSS la propriété display de smenu1 à none (c'est ce que fait le JS au lancement de la page) :
#smenu1 { display:none;}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 34
16 juil. 2008 à 18:42
ah d'accord je vois, tant dis que c'est rare les gens qui coupe le JS je vais (pour le coté esthétique) mettre en display : none

merci encore de ton aide je vais mettre le topic en résolu car c'est à peu près ça (sauf pour IE)

mais si t'as une solution pour IE je suis preneur ^^

mais là je vais encore chercher pour régler ceci

merci beaucoup pour ton aide (j'aurais d'autres question pour des div mais ça attendra demain et dans un nouveau sujet)

Merci encore et bonne soirée à toi
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
16 juil. 2008 à 18:48
c'est rare les gens qui coupe le JS
en fait, ça dépend du public visé, mais (par exemple) :
- Les malvoyants utilisent des navigateurs sans JS.
- La consultation via le téléphone ne supporte pas toujours le JS.
- Certaines entreprises peuvent bloquer le JS pour des raisons de sécurité.
0
phantomxlord Messages postés 470 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 12 juillet 2009 34
16 juil. 2008 à 18:53
oui exacte je me suis dis ça aussi donc du coup tant pis ça apparaitra

merci encore

ps : je vois pas d'où vient le problème IE :s
0