28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Je souhaiterai centrer un image dans une div carrée, que ce soit en largeur ou en hauteur (les dimension de cette image sont aléatoire puisque le site est dinamique).

Connaitriez vous un moyen ? J'ai essayé les margin auto, les vertical align etc. mais rien n'y fait ....

Merci beaucoup !!!!
Administrateur
Bonjour et bienvenue,

je t'invite à consulter la FAQ où se trouve les réponses à tes deux questions Smiley cligne
Bonjour,

Si on part du principe que ton site est dynamique, tu dois pouvoir connaitre le width et le height (surtout) de tes photos et si ton bloc conteneur a des dimensions fixes tu n'as que l'embarras du choix Smiley cligne
Bonjour,

C'est vrai que le “vertical-align” est bien tentant. Il parle de lui-même.
Voyons ce qu'en dit le W3C :
a écrit :
Cette propriété agit sur le positionnement vertical à l'intérieur de la boîte de ligne des boîtes générées par un élément de type en-ligne. Les règles suivantes n'ont de sens que par rapport à un élément parent de type en-ligne, ou de type bloc si celui-ci génère des boîtes en-ligne anonymes ; elles sont inopérantes autrement.
C'est clair non ?
Comment ?
Non, pas très ?
En effet. C'est leur style (-;

Moi, je comprends, en gros, que ça ne fonctionne que pour un élément en-ligne lui-même placé dans un autre élément en-ligne.

Ça tombe bien, une image est un élément en-ligne (c'est pour ça qu'on peut la centrer verticalement avec “text-align:center;” Marrant, non ?).
Oui, mais… Un <p>, une <div> ne le sont pas.

Alors il faut trouver autre chose.
Il en est un bien pratique, neutre et en-ligne. C'est <span>.
Donc, plaçons l'image dans un <span> et appliquons le “vertical-align” à ce <span>.
Essayons.
    .bolcimage {          /* style du <span> */
      vertical-align : middle;
      text-align:center;
      width:400px;
      height:400px;
      }

Zut, ça ne marche pas.

Reprenons plus attentivement notre lecture. On remarque :
a écrit :
S'applique à : ceux des éléments de type en-ligne et à l'élément 'table-cell'
.

Bon. Essayons.
    .bolcimage {          /* style du <span> */
      display : table-cell;
      vertical-align : middle;
      text-align:center;
      width:400px;
      height:400px;
      }
Mais… Ça marche.

Je viens de le tester (bon exercice).
Tu verras le résultat dans cet exemple.

On vient de simuler une cellule d'un tableau.
Alors, si tu ne veux pas te casser la tête, rien ne t'interdit d'utiliser réellement une cellule <td> dans un tableau <table>.
 
Modifié par Gihef (08 Aug 2007 - 22:13)
Gihef a écrit :
C'est clair non ?
Comment ?
Non, pas très ?
En effet. C'est leur style (-;

C'est clair à condition de lire les définitions données dans le reste de la spec... Par exemple, une boîte de ligne est une chose différente d'une boîte en-ligne.
Julien Royer a écrit :
C'est clair à condition de lire les définitions données dans le reste de la spec...

Oui. Pour des spécifications techniques, les spécifications HTML 4 et CSS 2 sont plutôt claires. Mais il s'agit de spécifications, pas de cours ou de documents pédagogiques (ce qui n'empêche pas d'apprendre aussi grâce aux spécifications, bien entendu).
Modifié par Florent V. (08 Aug 2007 - 16:03)