28221 sujets

CSS et mise en forme, CSS3

Bonjour,

Pour enlever un espace indésirable sous une image, j'ai rajouté la propriété display:block.
Cela fonctionne : ça enlève bien l'espace mais pas au premier chargement de la page.
C'est vraiment curieux, il faut revenir sur cette page pour que l'espace s'enlève !
A quoi cela est-il du ?

* l'image correspond à celle présente au-dessus du menu à gauche.
* pour tester à fond, videz le cache et l'historique sous Firefox

Voici l'url (n'importe quelle catégorie) :

http://www.accrochweb.com/magasin/index.php

Fonctionne correctement du premier coup sous IE, Opéra et Safari.
Bugue sous Mozilla et Mozilla Firefox.

Merci d'avance. Smiley cligne
Modifié le 19 Dec 2004 - 12:06
Administrateur
Ah oui le bug est réél sous FF Smiley confus

1ère visite d'une catégorie, gros espacement vertical; on revient plus tard, c'est bien collé l'un à l'autre.
Sous IE, directement bien collé.
Rem: comme dit ailleurs, si ca marche sous IE mais pas sous un moteur Gecko, c'est probablement une erreur d'encodage. IE bug sévèe et fais n'importe quoi, parfois en affichant comme on le veut un code qui ne devrait pas produire ce résultat voulu. Il vaut toujours mieux tester d'abord sous un browser gecko et ensuite regler IE que le contraire...

Bon, si je comprends bien, le problème est dans le rendu du code suivant sous FF et autres gecko:

HTML
<img src="images/souris.jpg" class="image_menu" alt="" />
<div class="menu_gauche">
<ul><li><hr /></li><li><span class="titre_menu">SOURIS</span></li><li><hr /></li>


J'avoue avoir du mal à comprendre la logique de ce bout de code... Es tu sur que c'est l'affichage de l'image qui pose problème?

Je ne connais pas bien le comportement normal des HR mais je me demande si ils n'ont pas un rôle dans ce problème. D'autant que je ne vois pas leur utilité. L'effet de "bordure" qu'il donne peut-être facilement obtenu via le CSS et devrait l'être, puisque c'est du style, pas du contenu.

L'utilisation d'une liste pour contenir deux HR et le titre me semble étrange elle aussi. Et risque de poser problème puisque tu as attribué à style à tes UL et LI pour le menu principal, sans distinction de class ou de id...

A ta place, j'essayerais avec un code plus dans le style:
<div class="catmenu">
<img src="images/souris.jpg" alt="" />
<h2>Souris</h2>
</div>


Mis en page avec
div.catmenu {
     background: white;
     width: -largeur du truc-;
}

div.catmenu H2 {
     border-width: 2px 0;
     border-style: solid;
     border-color: -code couleur de gris foncé-;
     margin: 0;
     padding: 0;
     font-size: 10px;
     font-weight: bold;

Ca devrait donner a peu près le même résultat en plus stable.

Si tu as du contenu (c'est un menu, non?) tu peux normalement l'ajouter sous le H2 dans une liste. Pour atteindre cette liste dans le CSS, le pointeur div.catmenu UL devrait suffire, pas besoin de lui donner une id ou class propre. idem pour ses élèment (div.catmenu LI).

Voilà, c'était mon idée...

Edit: autre solution imaginée en relisant mon post:
Tu peux aussi mettre tout ton menu dans une seule liste de définition, qqch comme:
<dl class="catmenu">
 <dt>Souris</dt>
 <dd class="illus"><img src="..." alt="" /></dd>
 <dd>item #1</dd>
 <dd>item #2</dd>
</dl>

Puisque la hauteur de ton image t'es connue d'avance, tu peux jongler avec le positionement en CSS pour la faire passer au dessus du DT. Et les bordure du DT donneraotn les lignes horizontales.

Encore un autre code utilisable:
<ul class="catproduct">
 <li class="illus"><img src="..." alt="" /></li>
 <li class="titre">Souris</li>
 <li>item #1</li>
 <li>item #2</li>
</ul>

Mais ca me semble moins pratique, parceque ta liste met, d'une certaine manière, sur le même pied les diffèrents élèments qu'elle contient: illustration, titre et "items". Seul ces derniers forement effectivement une "liste de liens".

Just my two cents hein. si quelqu'un a des remarques pertinentes à faire, c'est le bon endroit Smiley lol
Modifié le 19 Dec 2004 - 11:46
Administrateur
Tu utilises des <hr /> et ça pose des problèmes assez régulièrement dirait-on.
En les supprimant, est-ce que ça améliore le problème?
J'ai entouré les <hr> de <li> car pour valider du strict, c'est obligatoire.
J'ai testé sans les <hr> et même avec un H2, ce qui donne la même anomalie... le problème ne venait donc pas de là.
J'ai donc intégré directement mon image au début du menu (<ul>), en enlevant tout style à l'image (même display:block) et en modifiant le conteneur <div class="menu_gauche> avec margin-top:40px; => le résultat est bon et je suis très content.
C'est vrai, tu as raison LapinLove404, les <hr> servent à l'esthétique mais ce site est simplement un site de test, donc pas trop de fioritures ! Smiley lol

Merci beaucoup à vous deux de m'avoir aidé, ça fonctionne !
tulipe44 a écrit :

J'ai entouré les <hr> de <li> car pour valider du strict, c'est obligatoire.

Il n'y a rien de plus faux !
Un <hr /> se suffit à lui même que ce soit en HTML ou XHTML, Strict ou Transitional.