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 en CSS (texte, image)


Sujet :

Centrer un élément en CSS

  1. #1
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut Centrer verticalement en CSS (texte, image)
    Bonjour,

    Après maintes recherches, je sèche sur un problème qui me paraît pourtant simple.

    Je souhaite centrer verticalement un texte et une image de la façon suivante (dans un div par exemple, mais peu importe le conteneur) : cf pièce jointe

    J'ai testé la méthode suivante qui consiste à mettre l'image et le texte dans le même conteneur (un div par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .conteneur span {
    	display: inline-block;
    	vertical-align: middle;
    }
    .conteneur img {
    	display: inline-block;
    	vertical-align: middle;
    }
    Cette méthode fonctionne très bien. Mais dans mon cas j'ai besoin d'un sur l'image pour qu'elle s'affiche complètement à droite, et là ça ne marche plus. J'ai testé plein de possibilités (mettre 2 div, jouer sur la largeur, etc ...) mais je ne m'en sors pas.

    Si quelqu'un connaît une solution simple ^^
    Images attachées Images attachées  

  2. #2
    Membre chevronné Avatar de GihefBey
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 366
    Par défaut
    Bonjour,

    Les hauteurs ne semblant pas être définies, fais-ça dans un tableau.
    Avec 2 ou 3 cellules (gauche-milieu-droite).
    Le vertical-align y fonctionne et pas besoin de float.

    -

  3. #3
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Un tableau c'est ce que je veux éviter ... Surtout juste pour un mot et une image -_-

    La hauteur est fixée à 50 pixels sinon. Et la largeur est variable : le conteneur occupe l'espace disponible.

  4. #4
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Bonjour Poulpynette,
    le float:right fait passer la valeur du dsiplay à block de manière transparente, il est donc normal que ça ne fonctionne plus avec cette méthode.

    Tu as une autre méthode de centrage vertical connue (en supposant que ton image fasse 30px de haut):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .conteneur {position:relative; height:50px}
     
    .conteneur img { 
    position:absolute;
    height:30px;
    top:50%;
    right:0;
    margin-top: -15px
    }

  5. #5
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Merci pour cette solution déjà plus adaptée à mon problème

    J'ai simplement dû enlever le "top:50%" qui centrait mon image dans le navigateur et non dans le conteneur.
    Et connaissant la hauteur du conteneur et la hauteur de l'image, j'ai adapté le margin-top.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .conteneur {position:relative; height:50px}
     
    .conteneur img { 
      position: absolute;
      height: 32px;
      right: 0;
      margin-top: 9px;
    }
    Je vais voir si je peux en faire autant pour le span.

  6. #6
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    Je vais voir si je peux en faire autant pour le span.
    Hello,
    si la hauteur reste, pourquoi chercher une technique de centrage? Il te suffit d'un padding-top qui centre ton image non?
    En principe ça devrait se centrer avec le position:relative sur le conteneur.

  7. #7
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Erwan31 Voir le message
    Hello,
    si la hauteur reste, pourquoi chercher une technique de centrage? Il te suffit d'un padding-top qui centre ton image non?
    En principe ça devrait se centrer avec le position:relative sur le conteneur.
    Exact, pour l'image :
    - soit je lui applique "position: absolute;" en réglant le "top" ou "padding-top" et le "right"
    - soit je lui applique un "float: right" avec un "padding-top"

    Plus clairement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .conteneur img { 
      position: absolute;
      right: 0;
      margin-top: 9px; /*(ou padding-top ou top)*/
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .conteneur img { 
      float: right;
      padding-top: 9px;
    }
    Ces deux codes fonctionnent très bien.

    Là où je coince, c'est pour mon span qui se trouve à gauche. Je suis en train de tester, mais je commence à pédaler

    Le souci que j'ai avec le CSS, c'est que plus je teste, moins j'y vois clair et moins je raisonne. Donc faut pardonner mes étourderies

    Edit : solution de facilité : comme la hauteur du conteneur et celle de l'image sont fixées, on peut fixer celle de la police (il n'y a qu'un seul mot dans le span) et fixer le top comme pour l'image, en position absolute.

    J'aurais aimé savoir s'il existait une solution plus générique permettant de centrer verticalement mon span.

  8. #8
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Bonjour,

    Citation Envoyé par Poulpynette Voir le message
    Là où je coince, c'est pour mon span qui se trouve à gauche. Je suis en train de tester, mais je commence à pédaler
    La même chose : un float:right; pour l'img et un float:left; pour le span

  9. #9
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Eh non j'ai essayé, sans succès ... Un float: left ne m'aide pas à centrer verticalement ...

  10. #10
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Faudrait savoir Poulpynette... On a évoqué toutes les solutions de centrage possibles qui restent simples.
    Pourquoi n'utilisent tu pas la même technique en absolute pour le span de gauche à ce moment là?

  11. #11
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    Eh non j'ai essayé, sans succès ... Un float: left ne m'aide pas à centrer verticalement ...
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .conteneur span { 
      float: left;
      padding-top: 9px;
    }

    La même chose que l'image

  12. #12
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    J'ai dû mal m'exprimer.

    Citation Envoyé par Poulpynette Voir le message
    Edit : solution de facilité : comme la hauteur du conteneur et celle de l'image sont fixées, on peut fixer celle de la police (il n'y a qu'un seul mot dans le span) et fixer le top comme pour l'image, en position absolute.

    J'aurais aimé savoir s'il existait une solution plus générique permettant de centrer verticalement mon span.
    En gros, oui, je peux utiliser la même méthode que pour l'image sur mon span. A condition de fixer une taille de police en pixels (si je ne me trompe pas). Et c'est ce que j'ai fait.

    Ce que je souhaitais savoir, c'est s'il existait une solution plus générique pour centrer verticalement un span (quand on ne connaît pas la hauteur du contenu par exemple).
    Hormis ça, mon problème est résolu, à condition de tout fixer ^^

  13. #13
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .conteneur span { 
      float: left;
      padding-top: 9px;
    }

    La même chose que l'image
    Désolée pour le flood

    Macmillenium, l'image j'en connais la hauteur et c'est ce qui me facilite la tâche.
    Un span avec du texte, on n'en connaît pas toujours la hauteur.
    Si on connaît la hauteur du span, oui ça marche, je suis d'accord avec toi

  14. #14
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    Ce que je souhaitais savoir, c'est s'il existait une solution plus générique pour centrer verticalement un span (quand on ne connaît pas la hauteur du contenu par exemple).
    Il n'existe pas vraiment de solution générique, la méthode à choisir dépendra tout simplement du cas de figure mais la méthode la plus intéressante reste celle à base de display:inline:block / -moz-inline-stack (FF2) et vertical-align + correctif sur IE.
    EDIT Tu aurais pu tenter de passer ton image AVANT dans le code et de centrer ton span via cette méthode je pense.

  15. #15
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    Ok merci d'avoir pris du temps pour examiner mon souci et me répondre.

    C'est un problème récurrent d'après ce que j'ai vu en parcourant les forums et les tutoriaux.

    Si moi-même je trouve d'autre pistes intéressantes pour des cas plus généraux, je vous en ferai part.

    Erwan31 pour ton dernier edit, j'essaierai aussi merci

  16. #16
    Membre Expert Avatar de Erwan31
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2 177
    Par défaut
    Citation Envoyé par Poulpynette Voir le message
    Si moi-même je trouve d'autre pistes intéressantes pour des cas plus généraux, je vous en ferai part.
    J'en doute (si on fait exception du centrage via position:relative à la pace de absolute), ou alors ça ne correspondra qu'à du bricolage.
    Pour info je m'étais déjà penché dessus en faisant des recherches approfondies mais je n'étais parvenu qu'à une méthode un peu acrobatique à base de font-size et vertical-align, mais ça reste du bricolage

  17. #17
    Membre chevronné Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Par défaut
    T'inquiète, j'aime pas le bricolage et si je dois en arriver là, ce n'est pas ce que je vous proposerai

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Centrer verticalement une image par rapport au texte
    Par Ravens dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 03/12/2008, 21h18
  2. Centrer verticalement un texte et une image
    Par solorac dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 16/07/2008, 17h16
  3. Réponses: 9
    Dernier message: 07/02/2007, 16h57
  4. [CSS] Centrer verticalement du texte
    Par taly dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/04/2006, 14h24
  5. centrer du texte + css + fond image
    Par greench dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 22/02/2006, 20h30

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