IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Centrer verticalement une image dans une liste


Sujet :

Centrer un élément en CSS

  1. #1
    Membre habitué Avatar de demonixis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 : 80
    Points : 150
    Points
    150
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Salut

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

    A+

  3. #3
    Membre habitué Avatar de demonixis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 : 80
    Points : 150
    Points
    150
    Par défaut
    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).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    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"...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Hello,
    Pour que "vertical-align" soit pris en compte, je crois que tu dois afficher tes <li> en ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 )

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    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".

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Une image dans une image (image map?)
    Par oklama dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 14h13
  3. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  4. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo