28172 sujets

CSS et mise en forme, CSS3

Bonsoir,

On est dans une mise en page tout en colonne float: left; avec des colonnes de différentes largeurs spécifiées et des hauteurs en auto (utile ou pas ?). Je crois que vous connaissez déjà la question mais je vais la mettre en image :

upload/2378-Sans-titre-.png

La croix représente l'endroit ou la colonne suivante vient se positionner en fonction de la hauteur de A ou de C. Donc, est-ce qu'il existe une solution pour que la prochaine colonne vienne se mettre en-dessous de A même s'il y a une marge en hateur importante ?
Modifié par imagit (27 Nov 2008 - 21:27)
Bonsoir,

imagit a écrit :
Je crois que vous connaissez déjà la question

Oui, on l'a lue dans notre boule de cristal. Smiley lol
(Plus sérieusement, non, et nulle part dans ton message tu ne dis très clairement ce que tu cherches à réaliser.)

imagit a écrit :
La croix représente l'endroit ou la colonne suivante vient se positionner

Une cinquième colonne?

imagit a écrit :
Donc, est-ce qu'il existe une solution pour que la prochaine colonne vienne se mettre en-dessous de A même s'il y a une marge en hateur importante ?

Oui, un clear: left sur la prochaine colonne.
Bonsoir et merci Florent,

En effet, avec la pseudo-prorpiété clear: left, j'arrive à forcer un bloc quelconque à s'aligner à gauche. Ce qui veut dire que je dois attribuer une classe à la colonne qui va à la ligne or j'aimerais que le renvoie à la ligne se fait automatiquement en fonction de la largeur de l'ecran.
imagit a écrit :
avec la pseudo-prorpiété clear: left

Il s'agit d'une déclaration (propriété + valeur), pas d'une pseudo-propriété (nom qui n'existe pas en CSS il me semble...). Smiley cligne

imagit a écrit :
or j'aimerais que le renvoie à la ligne se fait automatiquement en fonction de la largeur de l'ecran.

Ça ne peut pas marcher avec des flottants, il me semble. Le comportement que tu cherches serait plutôt celui des éléments en display: inline-block. Problème: pas compatible IE6 et 7 et Firefox 2 (mais OK FF3 et IE8).
Modérateur
bonsoir,

heu si , voyons , display:inline-block; est compatible IE en tout cas pour les element de type inline. Il a d'ailleurs la particularité de conferé le layout.

On peut donc reproduire cet etat sur des element de type block.et ils doivent au préalable etre repassés en inline (pour perdre le retour a la ligne spécifique aux element de type block),pour ensuite conferé ce layout avec la regle:zoom:1;
et enfin obtenir un comportement inline-block; similaire au autre navigateurs.

Pour ff2 et inferieur on peut s'appuyer sur une regle prprietaire plutot etrange au premier abord.
display:-moz-inline-stack; qui comme elle l'indique (en anglais) semble vouloir empiler son contenu.
On peut contourner ce defaut d'empilage en inserant un conteneur supplementaire , jouant ainsi un role tampon .
Le resultat , n'est pas a 100% identique Mais il s'en approche beaucoup , il sera maitrisé par une largeur .

Enfin on aura besoin de commentaire conditionnel pour IE .

en fin de compte on a :

<div class="inline-block">
<div class="tamponFF2">
<p>les contenus</p>
</div>
</div>


le css :

.inline-block {
display:-moz-inlin-stack;/* FF , zapper par les autres navigatueurs */
display:inline-block; /* Les versions de ff qui ne comprennent pas cette regle , applique la précedente */
}
.tamponFF2 {
display:block; 
width: xx ; /* Une largeur doit etre imposée a ce niveau */
}

<edit>css en CC pour IE :
<!--[ if lte IE 7]>
<style>
div.inline-block {
display:inline;
zoom:1;
}
</style>
<![ endif]-->


Les conditions requises sont assez rigides pour le moment et la gestion
de la largeur par le biais ccs est imposé , selon le navigateur (IE6 , FF2) ,
elle sera prise comme min-width, ailleurs se sera width ! ,
si dans un navigatueur le contenu impose une largeur minimale ce n'est pas forcement le cas dans un autre ,
Les marges entre les elements different aussi
( l'un applique l'espace d'un caractère , l'autre non ,... etc ...) . Pas de réelle fluidité au rendez-vous .

Un test pour jugé du retour de ligne : http://gcyrillus.free.fr/essai/block-en-ligne-retour-alignement-top.html
Maintenant pas sur que cela conviennent a ce que tu recherche .

Un autre topic du genre ou l'on voit plus franchement la limite qu'impose FF2 :
http://forum.alsacreations.com/topic-4-37593-1-Probleme-dalignement-de-vignettes-et-legendes.html

avec un test de cette mise en page : http://gcyrillus.free.fr/essai/page_de_test-vignette.html
(Voir le rendu d'alignement des vignettes dans FF2 ou inf et FF3 , et IE 7 ou 6 ).

Un js , estimant la largeur cumuler des flottant et appliquant un clear sitot la largeur de la page depassé ,
Un min-height (a la louche) sur les flottants est peut-etre "un mieux que rien" en css .

... et tout ça pour repeter que Les navigateurs actuels ne peuvent tous mettre en application la solution la plus logique.
Modifié par gcyrillus (01 Dec 2008 - 01:37)