Aller au contenu

Des <li> en float sans débordement ?


vinzzonline

Sujets conseillés

Bonjour,

Aujourd'hui, une question sur les listes.

CE QUE JE VEUX FAIRE

J'ai des <li> organisés dans un <ul> (normal jusque là), positionnés en float, ce qui fait qu'ils se retrouvent sur plusieurs lignes (voir le screenshot pour l'exemple).

La hauteur de ces <li> varie en fonction du contenu (on entre un texte).

http://www.developpez.net/forums/attachmen...mp;d=1151570881

CE QUI SE PASSE

Le comportement observé dans la première image s'applique lorsque l'on rentre un texte dans le deuxieme <li> de la rangée, ou tous les <li> de la dernière rangée. Je vous explique pourquoi un peu plus loin.

Le problème que j'ai, c'est pour le premier <li>. Voilà ce qui se passe:

http://www.developpez.net/forums/attachmen...mp;d=1151570887

Vous aurez reconnu un probleme courant avec les floats, c'est à dire qu'il manque un clear:both sous la première rangée pour aligner tout ce petit monde.

Si ce problème n'apparait pas pour les éléments de la dernière rangée, c'est qu'il y a effectivement un "footer" clear: both à la fin.

LES QUESTIONS QUE JE ME POSE

Si on refléchi bien, il suffirait de rajouter un <div> ou un <hr> clear: both tous les 2 éléments pour palier au problème. Ceci marche sous FF mais petit problème sous IE.

Mais ce n'est pas là ou je veux aller. En effet, les éléments <li> doivent etre ABSOLUMENT SEULS dans le<ul> car tous ces éléments "bougent" dans le DOM (avec un peu de javascript, API "tool-man" pour ceux qui connaissent).

Donc pas possible de rajouter des éléments.

Questions:

1/ Pourquoi est-ce que ca fonctionne correctement avec le deuxième élément d'une rangée (comme illustré dans la première image) ? Intuitivement, je m'attendais à ce que ça foire...

2/ Comment résoudre le problème illustré dans la seconde image an utilisant uniquement des propriété de style pour l'élément <li> ?

En espérant que l'on puisse trouver une réponse ensemble sweatdrop

Merci d'avance ! biggrin

CODE

HTML:

<ul class="graphescontainer">
<li>
<div class="handle"><span class="edittitle">$varname</span></div>
<object type="application/x-shockwave-flash"
bla bla bla
</object>
<div class="edittext">Click here to add text</div>
</li>

...
Repeter 4 fois le <li>
...

</ul>
<div class="clear"></div>

CSS:

.graphescontainer

{
list-style-type: none;
width: 100%;
padding: 0px;
margin: 0px;
}

.graphescontainer li
{
border: 1px solid #333333;
margin: 3px;
position: relative;
float: left;
width: 49%;
}

.graphescontainer li .handle
{
cursor: move;
background-color: #333333;
color: #FFFFFF;
width: 100%;
border: none;
padding: 0px;
margin-top: 0px;
text-align: center;
font-weight: bold;
padding-bottom: 1px;
}

div.edittext
{
margin-top: 5px;
cursor: text;
text-align: left;
padding: 3px;
padding-top: 2px;
background-color: #FFFFE1;
}

.clear
{
clear: both;
}

:)

Edit captain_torche : pour rendre une grande quantité de code plus lisible, il est recommandé d'utiliser la balise CODEBOX. Ton post a été édite en ce sens.

Il est également plus agréable de bénéficier de la coloration syntaxique pour le code HTML. J'ai également effectué la modification.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...