Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > CSS
CSS Forum d'entraide sur l'utilisation des feuilles de style CSS. Avant de poster : Cours CSS, FAQ CSS, Galerie CSS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2011, 09h29   #1
Membre régulier
 
Avatar de demonixis
 
Homme Yannick Comte
Développeur Web
Inscription : juin 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Yannick Comte
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2008
Messages : 59
Points : 81
Points : 81
Par défaut Centrer verticalement une image dans une liste

Bonjour à tous,

Après avoir effectué des recherches sur le sujet, je n'ai pas trouvé de solution à mon problème, d'où mon post d'aujourd'hui, je vais donc vous expliquer ce qu'il se passe.

J'ai une page qui affiche une liste de miniatures (photo, bloc <img />) via une balise de liste (<ul>). Les listes <li> ont un affichage en block et en float, elles ont aussi une taille. Le problème est que les photos qui sont affichées sont soient au format paysage, soit au format portrait (avec un petit texte en dessous).

J'ai réussi à avoir un affichage correct, comme vous pouvez le voir sur cette capture :



Ce que j'aimerais réussir à faire maintenant c'est centrer verticalement et horizontalement ces images (surtout verticalement dans le cas d'une image en format portrait). Mais après avoir tenter plusieurs choses (comme display: table) je ne suis pas arrivé à grand chose.

Mon code à cette forme :

Code :
1
2
3
4
5
<ul id="sortable"> 
  <li><div class="media_item"><img src="..." alt="..." /></div></li> 
  <li><div class="media_item"><img src="..." alt="..." /></div></li> 
  <etc /> 
</ul>
et niveau css voilà ce que j'ai fais pour l'instant :

Code :
1
2
3
4
5
6
7
8
9
.widgetContainerTab.photosTabsContainer #sortable li { 
  display: block; 
  margin: 0px 0px 0px 5px; 
  padding: 0px 7px 10px 7px; 
  float: left; 
  width: 133px; 
  height: 170px; 
  text-align: center; 
}

Auriez vous une idée, une méthode pour centrer ces images ?

Avant j'utilisais une balise table pour réaliser cet affichage, mais je suis passé aux listes pour pouvoir réaliser un tri.

En vous remerciant par avance

Yann.
demonixis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h16   #2
Candidat au titre de Membre du Club
 
Inscription : avril 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 29
Points : 11
Points : 11
Salut

Essaie peut-être avec la propriété vertical-align: middle;
Pas sur que ça fonctionne mais ça peut être une piste

A+
briceparmentier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h25   #3
Membre régulier
 
Avatar de demonixis
 
Homme Yannick Comte
Développeur Web
Inscription : juin 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Yannick Comte
Âge : 26
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2008
Messages : 59
Points : 81
Points : 81
Bonjour,

Merci pour la réponse, j'ai déjà essayé la propriété middle et cela a été sans résultat

Auriez vous d'autres pistes ? J'ai fais des tests avec display: table sur la liste et display: table-cell sur les éléments de liste, mais là aussi je n'ai pas eu le résultat désiré.

En fait le problème c'est que dans ma mise en page je peux avoir du texte sous mes images ou pas et mes images peuvent être en format paysage ou portrait.. ce qui fait que si j'avais tout le temps du texte ou un format bien précis, je pourrais me permettre de faire une mise en page plus "stricte" avec des margin et padding bien définies mais ça n'est pas le cas (la vie est tellement plus intéressante quand il faut se prendre la tête avec 50 possibilités).
demonixis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h31   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2011
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 29
Points : 11
Points : 11
Où avais-tu mis la propriété vertical-align ? Dans le CSS de ton <li> ?

Il faudrait plutôt, vu ta construction, que tu la mettes dans le CSS de ta classe "media_item"...
briceparmentier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 02h11   #5
Invité de passage
 
Inscription : août 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 5
Points : 1
Points : 1
Hello,
Pour que "vertical-align" soit pris en compte, je crois que tu dois afficher tes <li> en ligne:
Code :
1
2
3
4
5
 
li {
  display: inline-block;
  vertical-align: middle;
}
L'utilisation de "float: left" n'est probablement plus nécessaire...

(Si mes souvenirs sont bons: attention à ne pas laisser d'espace entre tes </li><li> car avec ton affichage en ligne, ils seront interprétés à l'affichage. Cela peut te provoquer des petits décalages qu'il faudrait compenser )
dav808 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h16   #6
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Il n'y a pas de moyen simple en CSS pour le moment pour faire ce que tu veux. Enfin, il y en a, soit avec un display:inline-block comme juste au-dessus, soit avec un display:table-cell. Seulement, aucune de ces deux solutions ne fonctionnera dans ton cas sur IE 7 et inférieurs.

@dav808 : Un manquement au niveau de IE 7 et inférieurs fait que la valeur inline-block ne fonctionne que sur les éléments "inline" et pas sur les éléments "block".
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h57.


 
 
 
 
Partenaires

Hébergement Web