28172 sujets

CSS et mise en forme, CSS3


Bonjour à tous et à toutes,

alors voilà, pour mon thème de stage de 1ère année de BTS Informatique de Gestion, j'ai comme tâche de réaliser un site web, étant tombé sur ce type de menu
Menu avec multiple survol, je me suis dit que cela ferai une page d'accueil tout à fait adaptée au futur site, j'ai donc récupéré le code, ai modifier dans le css l'image de fond, les noms des liens, les url de destination, bref tout ce qu'il fallait pour pouvoir utiliser ce menu.
Seulement j'ai un problème qui empêche ce menu de produire son effet de survol, et une question sur le fonctionnement/personnalisation.

. Tout d'abord, bien qu'ayant changer l'image de background de ul et li:a:hover, je n'ai pas l'effet d'éclairage produit par le survol, ce qui ôte tout intérêts à ce code.
. Ensuite, d'où sortent les "Menu 1", "Menu 2", etc lorsqu'on survol les onglets? L'image est la même, et nul part il n'ya de "Menu x" dans le code... Smiley confus

Voici le code que j'ai adapté:
a écrit :
<!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>Un menu avec multiples survols sans preload d'images</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
/* CSS issu des tutoriels css.alsacreations.com */
body {
background: #000;
}
ul, li { /* utilisation de liste pour le menu */
list-style-type: none; /* suppression des puces de liste */
margin:0;
padding:0;
}
ul {
position: absolute; /* positionnement pour IE5 et IE5.5 */
top: 0;
left: 100px;
*****************background: transparent url(Images/ImageSangle.png) top left no-repeat; /* arrière-plan général du menu */
width: 360px;
text-align: center;
}
li {float: left;}

li a { /* dimensions et définitions des boutons */
display: block; /* mise en block de <a> pour lui donner des dimensions */
height: 420px;
*****************width: 90px;
color: #fff;
font-size: 14px;
line-height: 50px; /* hauteur de ligne pour éviter les paddings */
font-weight: bold;
font-family: arial, serif;
text-decoration: none;
}
li a:hover {
*****************background: transparent url(Images/ImageSangle.png) top left no-repeat;
}
a#lien1:hover {
*****************background-position: -360px 0%; /* décalage de l'arrière-plan pour chaque bouton */
}
a#lien2:hover {
*****************background-position: -435x 0%;
}
a#lien3:hover {
*****************background-position: -510px 0%;
}
a#lien4:hover {
*****************background-position: -585px 0%;
}
/* mentions et copyright */
div#mentions {
font-family: verdana, arial, sans-serif;
position: absolute;
bottom : 200px;
left : 10px;
width: 400px;
margin: 1em;
padding: 0.5em;
background: #FFF7D2;
-moz-border-radius:10px;
border-radius:10px;
line-height: 1.1;
font-size: 0.9em;
}
div#mentions a {
text-decoration: none;
color: #222;
}
div#mentions a:hover {
text-decoration: underline;
color: black;
}

-->
</style>
</head>
<body>
<ul>
*****************<li><a id="lien1" href="EPI.htm">E.P.I</a></li>
*****************<li><a id="lien2" href="Para-médical.htm">Para-médical</a></li>
*****************<li><a id="lien3" href="SportsEtLoisirs.htm">Sports Loisirs</a></li>
*****************<li><a id="lien4" href="Accessoires.htm">Accessoires</a></li>
</ul>
<div id="mentions">
<p>Une seule image pour tout le menu, et pas de preload !</p>
<p>Auteur : Raphaël GOETTER (<a class="test" href="http://www.alsacreations.com">Alsacreations.com</a>)</p>
<p>Pour obtenir et décortiquer le code : Bouton droit / afficher la source </p>
<p><a class="test" href="http://css.alsacreations.com/Galeries-de-menus-en-CSS">Retour à la galerie</a></p>
</div>

</body>
</html>

L'image que je compte afficher en background :
upload/17030-ImageSangl.png


Et le résultat actuel.
Si vous remarquez quoique ce soit qui ressemble à la solution ou qui puisse y mener... ne vous gênez pas. Smiley smile .
Merci d'avance pour toutes les participations.

Bonne journée.

ps : les ***************** dans le code, ce sont lignes que j'ai modifiées.

Modifié par PhoenixXx (17 Jun 2008 - 15:13)
Bonjour PhoenixXx,

Une image valant mieux qu'un long discours et comme le précise Raphael :
a écrit :
Une seule image pour tout le menu, et pas de preload !

upload/12813-fondmenu.jpg

"L'effet d'éclairage" (donc le survol des liens) fait partie intégrante de l'image de fond qui est utilisée, ce qui fait tout l'intérêt de ce tutoriel.
Cela répondra également à ta question :
a écrit :
"d'où sortent les "Menu 1", "Menu 2", etc ?"

Il te faudra donc modifier ton image si tu souhaites utiliser cette technique Smiley cligne
(accessoirement changer ton hébergeur, mais c'est un autre débat Smiley lol )

Le choix de la mise en forme de ton message n'est pas des plus judicieux (c'est le matin, et ça pique les yeux...) inutile également de mettre en exergue (le bouton "gras") l'ensemble de ce dernier, en général, on ne met en valeur qu'une petite partie d'un propos (pour insister sur un poin précis par exemple )
Le bouton "éditer", en haut à droite sur ton premier message, pourra te permettre de corriger le tir Smiley cligne

Je t'encourage à modifier ton image et venir nous montrer le résultat (poser des questions s'il y a des points qui ne sont pas clairs)

Bonne journée,
Cdt,
Sylvain
Modifié par 6l20 (22 Jun 2008 - 10:09)
Nickel merci, we pour le fournisseur je suis bien d'accord, lol.
Le résultat devrait pas tarder à tomber. lol.
Bonsoir tout le monde,

bon donc c'est ok j'ai pigé le principe de l'image coupée en 2 dont seul une moitié est affichée, par contre j'ai un souci pour le décalage du background.

Voilà le : résultat
et l'image totale
upload/12813-Menuavecte.gif

sur le code source le décalage est en négatif, mais comment faut faire? partir de la photo de droite? ya un truc que je comprend pas là..... Smiley confus

<Note de modération>Attention à ne pas poster des images trop grandes qui déforment le forum, utiliser la fonction "Générer un aperçu" pour générer une miniature, merci</note>
Modifié par 6l20 (22 Jun 2008 - 10:07)
Bonjour PhoenixXx,

Propriété Background-position

1-Schématiquement, c'est comme si tu avais un cadre fixe (la zone de visualisation définie par la balise <a>) et que tu faisais défiler une image par dessous, dans ton cas, tu veux afficher une image qui se trouve à droite (le rollover) donc, tu "tires" ton image...par la gauche pour amener dans la zone de visiualisation cette image qui se trouve à droite, il faut donc affecter une valeur négative à la position du background:

upload/12813-shema.png

2-Pour que l'effet rollover soit "parfaitement réussi, il faudrait que les deux états de ton image aient les mêmes dimensions (ce qui ne me semble pas tout à fait le cas Smiley cligne )

Attention à tes déclarations :
li a { /* dimensions et définitions des boutons */
...
height: [#red][b]2001[/b][/#]px;/*valeur initiale 420*/[#blue]C'est voulu ?[/#]
...
}

a#lien2:hover {
background-position: +728[#red][b]x[/b][/#] 0%;
}

Prendre l'habitude de déclarer un Doctype, même pour un test Smiley cligne
Revoir éventuellement les bases (FAQ, Tutoriels,...)

Cdt,
Sylvain