Je vais essayer d'utiliser display: inline-block;
de style les éléments contenant chaque image. Exemple de code HTML pour un conteneur:
<style>
.figure {
display: inline-block;
}
</style>
<div class="figure">
<img src="littlepony.jpg" alt="My cute little pony" width="13" height="37" />
</div>
Maintenant, il y a quelques pièges en utilisant cela avec IE6, IE7 et Firefox 2:
- IE 6 et 7 ne fera que les éléments en ligne de style qui ont hasLayout déclenché , je veux dire que vous verrez le comportement inline-block si vous faites ceci:
<!--[if lte IE 7]>
.figure {
display: inline;
zoom: 1; /* triggering hasLayout */
}
<![endif]-->
- Firefox 2 ne comprend pas
display: inline-block;
vous devrez donc précéder celle-ci par une autre instruction d'affichage:
.figure {
display: -moz-inline-stack;
display: inline-block;
}
- maintenant Firefox 2 va vous embêter un peu. Tout d'abord, vous devez avoir un seul élément enfant dans votre élément
.figure
, sinon les enfants ...empiler. Donc, si vous avez une légende sous l'image, insérez un div entre div.figure et img + p
<div>
<img src="littlepony.jpg" alt="Photo of my cute little pony" width="13" height="37" />
<p>Second child of .figure>div and not .figure</div>
</div>
</div>
deuxième (encore que dans Fx2), vous remarquerez de temps en temps que vous pouvez » Ne sélectionnez plus le texte à l'intérieur de l'élément -moz-inline-stack'ed et ne cliquez plus sur les liens qu'il pourrait contenir. La solution est de positionner la div ajoutée relativement:
.figure div {
position: relative;
}
Bien sûr, le commentaire conditionnel pour IE6/7 doit se produire après CSS normal, sinon il sera de peu d'aide.
Enfin, si aucune solution élégante ne vous convient, utilisez une TABLE. Une table simple avec seulement td et non th. Si elle se produit que:
- IE6 et 7 n'aiment pas
display: table-sth
- votre CMS cause des problèmes à ce qui serait autrement fonctionner correctement sur un autre site
- Firefox 3 pour le soutien
inline-block
est d'aucune aide
que oui, il vaut mieux pour tout le monde que vous utilisez une table et aucun problème provoquant une demi-solution à la moitié de vos utilisateurs;)
Cela ne semble pas aider. Mon code est présenté de la même manière que votre premier exemple, sauf qu'il y a alors un gros div autour de tout cela - à savoir celui qui appartient au contenu div principal du modèle que j'utilise. Le problème est que ce div lui-même est en train de flotter, et il semble que tout type d'effacement efface les flotteurs sur l'ensemble du modèle, pas seulement dans la grille que je suis en train de faire. – nedned