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 du texte par rapport à une image dont la hauteur n'est pas connue


Sujet :

Centrer un élément en CSS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut Centrer verticalement du texte par rapport à une image dont la hauteur n'est pas connue
    Bonjour

    Comme tout amour, c'est parfois un peu prise de tête
    Soit la page synthétique ci dessous :
    http://www.la-voltige.com/test/test.htm

    Que dois-je faire pour centrer verticalement le texte par rapport
    aux images ?

    Merci
    Julien

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Tu les mets dans un même conteneur, puis la FAQ propose deux options.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Merci Franculo,

    J'ai bien vu la faq, mais l'exemple présente des cas où la hauteur
    du bloc est connue.
    Dans mon cas, la hauteur du bloc doit être déterminée par la hauteur
    de l'image qui n'est pas connue à l'avance.

    Quand j'inspecte avec firebug le bloc de classe "bande", sa hauteur n'est pas
    celle de l'image (j'imagine que c'est parce qu'elle est float) mais celle du texte.

    Julien

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    En utilisant vertical-align ça fonctionne sur FF3.6, IE8, Oera10.6, Chrome6 et Safari5 sous Windows.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>alignement vertical image et texte</title>
    <style>
      body {margin:0;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;}
      #section {margin:1em auto;width:30em;background:#333;}
      img {vertical-align:middle;}
    </style>
    <head>
    <body>
      <div id="section">
        <img src="images/150x150.jpg" alt="alignement vertical?" />
        blah!
      </section>
    </body>
    </html>
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Novembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    dans ta class pour l'image, essaye de remplacer 'block' par 'inline-block' afin d'obtenir 'display:inline-block;'.
    Merci d'éviter le poisson rouge dans une boule, ces poissons peuvent grandir jusque 25 cm!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    En utilisant vertical-align ça fonctionne sur FF3.6, IE8, Oera10.6, Chrome6 et Safari5 sous Windows.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>alignement vertical image et texte</title>
    <style>
      body {margin:0;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;}
      #section {margin:1em auto;width:30em;background:#333;}
      img {vertical-align:middle;}
    </style>
    <head>
    <body>
      <div id="section">
        <img src="images/150x150.jpg" alt="alignement vertical?" />
        blah!
      </section>
    </body>
    </html>
    Bonjour

    Effectivement, cela fonctionne si j'écris blah.
    Mais si j'écris blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah

    J'obtiens une ligne centrée sur l'image et tout le reste sous l'image.
    Voir le résultat ici


    dans ta class pour l'image, essaye de remplacer 'block' par 'inline-block' afin d'obtenir 'display:inline-block;'.
    , c'est pareil.

    Merci de votre en tout cas.
    Julien

  7. #7
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ceci fonctionne avec les mêmes navigateurs que précédemment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>alignement vertical image et texte</title>
    <style>
      body {margin:0;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;}
      #section {margin:1em auto;width:30em;background:#333;}
      img {vertical-align:middle;}
      span {display:inline-block;vertical-align:middle;width:20em;}
    </style>
    <head>
    <body>
      <div id="section">
        <img src="images/150x150.jpg" alt="alignement vertical?" />
        <span>blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! 
        blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! 
        blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah!</span>
      </div>
    </body>
    </html>
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Bonjour

    En fait, sur le principe de ce que je veux faire, ni la taille de l'image (hauteur,
    largeur) ni la largeur globale n'est connue à l'avance. (la largeur globale
    pourrait être un pourcentage de la taille de la fenetre du navigateur).

    Plus je lis sur le net, plus j'ai l'impression que ce que je voudrais n'est pas
    possible. J'ai fait une adaptation de ta proposition avec du javascript
    qui fixe la largeur du span en fonction de la largeur du parent et de celle
    de l'image. J'aurai préféré une soluce pure css mais bon...

    Merci
    Julien

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Pour info, voila le code, il reste à éclaircir pourquoi je dois mettre un "-5",
    je ne dois pas prendre en compte une marge ou qq chose du genre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>alignement vertical image et texte</title>
    <style>
      body {
      margin:0;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;
      }
      #section {
      margin:1em auto;width:50%;background:#333;
      }
      img {
      vertical-align:middle;
      }
      .span {display:inline-block;vertical-align:middle;overflow:hidden;white-space:nowrap;}
      p{margin:0;};
    </style>
     
    <script  type="text/javascript" >
    window.onresize = onResize;
    var  registeredSpans = new Array();
     
    function registerSpan(spanId, imgId){
      registeredSpans[registeredSpans.length] = new Object();
      registeredSpans[registeredSpans.length-1].span = document.getElementById(spanId);
      registeredSpans[registeredSpans.length-1].img = document.getElementById(imgId);
      resizeSpan(registeredSpans[registeredSpans.length-1]);
    }
     
    function resizeSpan(spanRecord){
    		if (spanRecord.span.style.setAttribute) { // Pour mon ami IE
                spanRecord.span.style.setAttribute ("width", spanRecord.span.parentNode.clientWidth-spanRecord.img.offsetWidth - 5 + "px");
            } 
            else {
    			spanRecord.span.style.setProperty ("width", spanRecord.span.parentNode.clientWidth-spanRecord.img.offsetWidth - 5 + "px", null);
            }
    }
     
    function resizeAllSpans(){
    	for (i = 0 ; i < registeredSpans.length ; i++ ){
    		resizeSpan(registeredSpans[i]);
    	}
    }
     
    function onResize(){
      resizeAllSpans();
    }
     
    </script>
    <head>
    <body>
      <div id="section" >
        <img src="26_190.jpg" id="img1" alt="alignement vertical?"  onload='registerSpan( "span1", "img1");'/>
        <span class="span" id="span1" ><H2>blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! </H2>
    <p>    blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! </p>
        blah! blah! blah! blah! bla! blah! blah! blah! blah! blah! blah! blah! 
        blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah! blah!</span>
      </section>
    </body>
    </html>

  10. #10
    Membre émérite
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Points : 2 907
    Points
    2 907
    Par défaut
    Hello, tu peux essayer avec un display:table
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <!DOCTYPE HTML>
    <html lang="en"><head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     
     
    <meta charset="utf-8">
    <title>alignement vertical image et texte</title>
    <style>
      body {margin:0;background:#000;color:#ddd;font:bold 1em Helvetica, Arial, sans-serif;}
      #section {margin:1em auto;width:30em;background:#333;display:table;}
      span {display:table-cell;vertical-align:middle;}
    </style>
     
    </head><body>
      <div id="section">
        <span><img src="tst_fichiers/image.jpg" alt="alignement vertical?"></span>
        <span>blah!     blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!    
    blah!    blah!    blah!    blah!    blah!    blah!    blah!    blah!   
    blah!    blah!    blah!    blah!</span>
     
    </div></body></html>

    Mais ne fonctionnera pas sur IE7 et moins il me semble
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et si c'est le cas

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Bonjour CandyGirl

    Mon besoin visuel est exactement celui-ci. (mais avec du javascript). Il faut
    redimensionner la page pour voir le principe.

    Si je mets display:table; la division est dimensionnée par son contenu
    et je ne sais pas tronquer le texte...

    Merci
    Julien

  12. #12
    Membre émérite
    Avatar de Candygirl
    Femme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 912
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Points : 2 907
    Points
    2 907
    Par défaut
    Je ne suis pas sûre d'avoir compris
    Le but est de faire disparaître un bout du texte pour le rendre illisible ?

    Tu obtiens, il me semble, le même effet sur mon code en modifiant le css que je t'ai donné de la manière suivante:

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #section {margin:1em auto;width:50%;background:#333;overflow:hidden;}
    span {display:table-cell;vertical-align:middle;white-space:nowrap;}
    En faite, le display:table n'est apparemment plus indispensable.
    Au passage, tu dois utiliser un div plutôt qu'un span si tu comptes mettre des p ou h2 à l'intérieur.
    Les bons réflexes:
    • avant de poser une question:
      règles | faq | tutoriels | recherche
    • clarté, politesse, vocabulaire et orthographe soignés = efficacité
    • remercier ceux qui ont pris le temps d'aider et si c'est le cas

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par Candygirl Voir le message
    Je ne suis pas sûre d'avoir compris Le but est de faire disparaître un bout du texte pour le rendre illisible ?
    Ben si, t'as compris et comme ça, c'est pafait C'est pour faire un template
    sur plateforme mobile. Le titre apparait et ce qui déborde... déborde !
    Le pb n'était pas de rendre invisible ce qui dépasse mais de centrer verticalement
    sur une image de taille imprévue et sur une largeur de page imprévue également.
    Une fois que j'ai pu centrer, j'arrivais plus à faire déborder (: quel looser !

    Citation Envoyé par Candygirl Voir le message
    Au passage, tu dois utiliser un div plutôt qu'un span si tu comptes mettre des p ou h2 à l'intérieur.
    C'est juste.

    Merci de ton aide.
    Julien

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

Discussions similaires

  1. Positionner bloc texte par rapport à une image
    Par cccb24 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/07/2013, 11h05
  2. Décaler le texte par rapport à une image
    Par ickyknox dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/03/2013, 13h03
  3. Centrer du texte verticalement par rapport à une image
    Par gb1963 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 09/06/2010, 09h40
  4. Texte centré par rapport à une image (sans table)
    Par devyan dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/12/2008, 20h10
  5. positionnement de texte par rapport à une image
    Par maysa dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 03/12/2007, 13h49

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