28172 sujets

CSS et mise en forme, CSS3

Pages :
Bonjour,
Voilà je tente de faire un menu particulier.
Je mets ce que j'ai fait ici
http://www.profectron.com/Atelier/menu/menu.html
Le menu doit être composée d'une bande colorée sur toute la largeur du navigateur.
Au survol des bouton, une petite encoche en haut doit apparaitre (je sais qu'ilfaut gérer cela avec un sprite) et laisse apparaitre le fond de la page. (j'ai mis une image en exemple).
Mon problème est comment gérer l'effet au survol sur les boutons et la bande de couleur.
Merci pourntout aide car je galère bien Smiley biggrin
Modifié par Manheman (06 Sep 2011 - 18:51)
Salut Manheman,

un peu brouillon ton code je suis pas spécialiste mais tu utilises trop de div.
Par exemple ta class bd:

<div class="bd"></div>


Tu peux le faire directement avec ta balise div "menu-menu_wp".(conseil reduit le nom des id de tes balises surtout quand tu repetes deux fois "menu" redondance inutile juste "menu" ou "menuWarper"... )

Ensuite pour faire tes premiers pas avec les Sprites tu as un tuto sur Alsa et un autre que j'aime bien ici.
Bonjour,
Merci pour ta réponse.
Pour le coté brouillon du code c'est normal car je suis en plein dedans... il y aura bien évidemment du nettoyage à faire.
J'essaye de comprendre certaines techniques pour arriver à réaliser ce menu.
Pour l'utilisation des sprites, j'ai bien compris et merci pour les liens. Mon problème reste celui de la gestion des sprites avec l'effet du fond apparent et la bande de couleur verte.
Salut,

Si tu souhaites absolument de la vraie transparence je pense que ça risque d'être compliqué.
Mais tout d'abord avant de partir dans une réflexion plus complexe, ton fond sera de quel type ? Sera t-il fixe à l'arrière de tes liens ?
Bon alors plutôt que de partir sur de longue explication, j'en suis là :
http://www.profectron.com/Atelier/menu/test_2.html

Avec l'aide d'un ami, je suis parti pour intégrer la ligne verte directement dans le fond.
Reste quelques problème d'ajustement, mais je ne vois quel autre méthode utilisée.
Le menu doit pouvoir ne pas être fixe... bref beaucoup de contrainte technique qui font que j'ai du mal.
De plus ce menu est généré par wordpress, ce qui veut dire que l'on peut aussi ajouter des rubriques...
Effectivement tu réunis beaucoup de contraintes en même temps (texture du background, position variable du menu, ajout de rubriques) la je sèche... Je pense que tu devrais alors simplifier ton design. Si tu veux absolument ce rendu et ne pas utiliser JavaScript, je pense que tu n'as pas le choix, à chaque rajout de rubrique tu devra réadapter ton menu. Maintenant en passant par un peu de JavaScript et en considérant que la largeur de ton <ul class="nav"> est fixe (pour pouvoir le centrer dans ta page) tu devrait peut être réussir à faire quelque-chose. Pour ta bande qui fait la largeur totale, soit effectivement tu l'intègre en background-image centrer avec un "trou" au centre soit tu utilises un tableau (qui doit faire 100% de la largeur de ta fenêtre) ayant dans la 1ère et 3ème colonne ton png transparent.

La logique que j'ai en tête pour la gestion dynamique en JS :
- récupérer la largeur totale de tes <li> (avec Jquery ou mootools c'est relativement simple)
- tu soustrait à la largeur de ton <ul> (en px) le total de la largeur de tes <li> enfants
- tu injectes en JS avant ou après tes <li> (en fonction de l'alignement souhaité de ton menu) un nouveau <li> ayant comme largeur le différentiel calculé précédemment

Voila mon idée qui devrait marcher sans trop de problèmes.

Voici le code source "statique" pour créer ton menu (bien-sûr c'est juste exemple vite fait, que tu peux améliorer, optimiser et comme indiqué précédemment rendre "dynamique" avec JS) :

<table>
  <tr>
    <td class="col"></td>
    <td><ul>
        <li><a href="#">Rubrique 1</a></li>
        <li><a href="#">Rubrique 2</a></li>
        <li><a href="#">Rubrique 3</a></li>
        <li><a href="#">Rubrique 4</a></li>
        <li><a href="#">Rubrique 5</a></li>
        <li class="remplissage"></li>
      </ul></td>
    <td class="col"></td>
  </tr>
</table>


html, body { margin:0; padding:0; width:100%; height:100%; background-image:urlimages/bg.jpg);}
table { width:100%; border-collapse:collapse; margin:50px 0 0 0;}
table td { width:960px; padding:0;}
table .col { width:auto; background-image:url(images/bande-verte-haut.png);}
ul { width:960px; margin:0; padding:0; overflow:hidden;}
li, li.remplissage:hover { float:left; height:30px; line-height:30px; list-style:none inside; background-image:url(images/bande-verte-haut.png); }
li a { color:#FFF; font-size:12px; text-decoration:none; text-align:center; display:block; width:120px;}
li:hover { background:url(images/coche-vert.png) center top;}
li.remplissage { width:360px; /* Largeur restante à combler */}


Je pense que ça devrait le faire ! Smiley cligne
Tiens moi au courant.

PS : Si quelqu’un à une idée pour faire quelque-chose d’identique sans tableau. Plus trop d'idées là, il est tard je n'arrive plus à réfléchir ! ^^

Youpiii je viens de voir que c'est mon 100ème post, ça se fête non lol Smiley birthday
Aller j'arrête la fatigue commence à me faire perdre la raison Smiley crazy
Modifié par Spacedementia (29 Jul 2011 - 00:27)
Merci beaucoup pour cette piste d'utilisation d'un tableau.
Tu penses bien que je me suis précipité pour tester... et là surprise est que le comportement est complètement différent selon le navigateur.
J'ai testé sous safari (Version 5.0.5), avec sur la droite un trou à compléter, mais c'est normal car il faut ajuster cela avec js.
Par contre les rollovers laisse apparaitre deux encoches.

Sous firefox (Version 5.0.1), le menu occupe toute fenêtre du navigateur, donc pas de trou à combler et les les rollover sont nickels.

Je ne sais vraiment plus quoi faire avec ce menu...
Salut,

Rajoute simplement "&nbsp;" dans les deux td ayant la classe "col". Apparement Safari ne donne pas de dimension à un td vide de contenu. Smiley cligne

Pour ton problème de sprite sous Safari, je n'ai aucun problème avec le code que je t'ais fourni que ce soit sur une version 4 ou 5. J'ai un rendu identique a FF... Vérifie bien ton code et le positionnement de tes sprites.
Modifié par Spacedementia (29 Jul 2011 - 14:01)
Oui merci pour ton aide.
Effectivement, pour les sprites, j'avais un pb avec le cache.
Maintenant j'essaye d'ajuster par dessus le tableau un logo et je galère ...
As tu plus d'infos à ton problème ? Un lien peut être ?
Par contre je pense que tu t'en doutes mais je ne vais pas t'aider pour toute la mise en page de ton site Smiley cligne , n'hésites pas à essayer de perfectionner tes connaissances en CSS si tu as du mal à réaliser certaines choses.
Donne moi un lien et je peux encore t'aider sur le positionnement de ton logo.
Bonjour,
Oui j'ai un lien mais je crois que m'a assez aidé comme cela et effectivement il n'est question de faire tout le travail.
J'essaye tout simplement de placé un logo juste à coté du menu qui doit se déplacer comme le menu en redimensionnant la fenêtre.
Je dois effectivement améliorer très largement mes connaissances en css.
Je me suis d'ailleurs acheté un bouquin ce sujet. Je me suis lancé d'un aventure qui sera je l'espère formatrice et pas le contraire.
Merci pour ton aide je ne t'en demande pas plus.
Très bien. Bon courage à toi ! Tu verra le CSS c'est passionnant. A bientôt Smiley cligne

PS : Juste un petit [Résolu] dans le sujet de ton post. Merci
Modifié par Spacedementia (29 Jul 2011 - 17:47)
Re,
Bon finalement, je sollicite encore un peu d'aide.
J'ai laisser de coté l'idée du tableau.
J'ai commencé à placé le logo et finalement je pense que j'y suis presque :
http://www.profectron.com/Atelier/menu/menu_f.html
J'ai encore deux problèmes à régler :
- comment faire en sorte que le menu qui se trouve dans un espace de 800px s'ajuste automatiquement (bref combler le trou)
La difficulté réside dans le fait que l'on peut ajouter des sections dans le menu ou en supprimer.
- sous safari (http://www.profectron.com/Atelier/menu/images/capture_safari.png), on peut voir un léger recouvrement à droite entre le logo et la bande verte, ce que je ne constate pas sous firefox.
Merci pour tout aide.
Je corrige ma remarque concernant le recouvrement.
Cela apparait sous tous les navigateurs lorsque que l'on redimensionne la fenêtre, mais elle n'apparait pas tout le temps.
a écrit :
comment faire en sorte que le menu qui se trouve dans un espace de 800px s'ajuste automatiquement (bref combler le trou)
La difficulté réside dans le fait que l'on peut ajouter des sections dans le menu ou en supprimer.

As tu bien lu mes précédents post ? j'ai déjà répondu à cette question dans le 6ème post... Tu dois utiliser du JavaScript pour injecter une balise redimensionnée dynamiquement pour combler ce vide.
a écrit :
sous safari (http://www.profectron.com/Atelier/menu/images/capture_safari.png), on peut voir un léger recouvrement à droite entre le logo et la bande verte, ce que je ne constate pas sous firefox

Effectivement cela apparait sur la plupart des navigateurs, cela dépend en fait de la manière dont ils calculent les arrondis... Ton background est en position "center" mais en réalité quand tu redimensionnes ta fenêtre la position de ton background sera donc de temps en temps une position arrondie au pixel supérieur ou inférieur et c'est ceci qui décalera ou non ton background d'1px. Je ne sais pas si j'ai été clair mais c'est une réaction pas forcément facile à comprendre mais c'est mathématique.

Tu n'as donc pas le choix pour conserver une transparence et ne pas avoir de chevauchement tu dois absolument utiliser le code que je t’ai proposé (et oui les tableaux servent par fois ^^). Ce problème à été pris en compte dans le code fourni. Smiley cligne
Modifié par Spacedementia (30 Jul 2011 - 21:00)
C'est une blague ??? Tu parles bien des lignes grises à 45° de ton background ???
Modifié par Spacedementia (01 Aug 2011 - 21:57)
Les bandes ne s'inversent pas, on dirait plus un problème d'affichage du à la carte graphique... Pour moi ce problème ne vient absolument pas du CSS ou HTML car à ma connaissance c'est une réaction tout simplement impossible à reproduire. J'ai testé sous IE7,8,9, chrome, firefox et safari et impossible de reproduire cette réaction. En plus que plusieurs personnes te disent voir ce phénomène... Arrêtez de donner de la drogue à vos PC... ^^
Plus sérieusement peut être un problème de rafraichissement d'écran ou quelque-chose ou niveau hardware mais en plus de 5 ans d'intégration je n’ai jamais vu une chose pareil...
Pour moi ça vient obligatoirement des PC, rien à voir avec ton code (même si ton code JS pourrait être plus que largement optimiser et réduit à deux ou trois lignes, jquery permet de réaliser ces opérations en quelques lignes...)
Donc plus je ne peux pas t'aider par rapport à ce problème d'affichage vu que je n'arrive pas à le reproduire et que ton code HTML semble relativement propre...
Par contre pour infos tu as oublier de fermer ton <div class="body">.
Oui tu as tout à fait raison. Je viens de tester sur une autre machine et je ne remarque pas cet effet.
Comme quoi parfois on peut chercher pendant des heures pour rien.... ou du mauvais coté....
Cela dit c'est bon à savoir maintenant.
Pour la balise je venais juste de corriger. Merci pour ton efficacité !!
Que vois tu comme optimisation pour le code js ?
Pages :