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 :

Comment faire un alignement vertical d'une image pour tous les navigateurs?


Sujet :

Positionnement en CSS

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut Comment faire un alignement vertical d'une image pour tous les navigateurs?
    Bonsoirs chers designers,

    Voici mon problème (néophyte de design)
    J'ai fait une table :
    1 ligne
    2 colonne
    Dans la première colonne j'ai une photo que j'aimerais centrer verticalement, parce que en dessous se trouve une image de fond comme un cadre.

    voici ce que j'ai fait qui marche avec (Safari et Opera)
    Mais chez IE8 et Firefox, la photo n'est pas centrer verticalement
    J'ai même ajouter des span autour pour faire en plus un css vertical-align mais rien à faire Aidez-moi SVP

    Voici mon code
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table width="540" height="100" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="100" height="100" class="bgPhoto" valign="middle"><a href="lien"><span class="alnignerVertical">lien_photo</span></a></td>
    <td width="17" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td>
    <td width="423" valign="top" class="gauche"><h3>titre</h3>textecouper
    <span class="texteformaterDroit">
    <a href="lien" class="menuDroit"><br />Texte complet, cliquez ici&nbsp;</a><br />
    </span></td>
    </tr>
    </table>

    Voici le css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .alnignerVertical {
    vertical-align:middle;
    	}
    D'avance je vous remercie beaucoup

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    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 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Mettre un vertical-align sur un élément qui est tout seul, ça ne sert à rien. Il faut que tu le mette dans ce cas-là sur ton td.

  3. #3
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Merci pour ta réponse. J'ai fait ce que tu m'as dit voici les codes. Mais le résultat est le même dans IE et Fireox

    Css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    .bgPhoto 
    {
       background-image: url(../img/fond_photo.gif);
       background-repeat: no-repeat;
       width: 100px;
       height: 100px;
       text-align: center;
       vertical-align:middle; 
    }
    Dans la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table width="540" height="100" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="100" height="100" class="bgPhoto" valign="middle"><a href="lien">$lien_photo</a></td>
    <td width="17" valign="top"></td>
    <td width="423" valign="top" class="gauche"><h3>titre</h3>textecouper
    <span class="texteformaterDroit">
    <a href="lien" class="menuDroit"><br />Texte complet, cliquez ici&nbsp;</a><br />
    </span></td>
    </tr>
    </table>
    Merci d'avance de ton aide. J'espère que tu me donneras un exemple avec mon code, car je ne sais pas ce qui cloche.

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    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 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Ben écoute, avec le code que tu nous montres, je n'ai aucun problème sur Firefox :


  5. #5
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Y a t-il SVP à votre avis un moyen pour éviter ce problème? parce que moi aussi bien sur IE8 et Firefox3.08 j'ai ce problème d'affichage comme vous pouvez le voir sur cette image.
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    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 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Affiche les bordures de ton tableau, ta colonne de droite descend certainement plus bas que tu ne le penses.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour, regarde dans ton code :
    Texte complet, cliquez ici&nbsp;</a><br />
    Enlève ces 2 "bricoles" ...
    (ce dernier <br /> n'est pas interprété de la meme manière sur les differents navigateur : sur l'un il fera un passage a la ligne, et pas sur un autre ...)

    Nb: le centrage vertical de ta photo dépend du contenu de l'autre cellule.
    Pour peu que tu aies plus de textes que prévu, la cellule va automatiquement s'allonger (en hauteur), malgré le width="100" de ta table.

    Il serait donc préférable de mettre ta classe bgphoto dans un div :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table style="width:540px; height:100px; padding:0; spacing:0;">
    <tr>
    <td style="width:100px; vertical-align:top;"><div class="bgPhoto"><a href="lien">$lien_photo</a></div></td>
    <td style="width:17px; vertical-align:top;"></td>
    <td style="width:423px; vertical-align:top;" class="gauche"><h3>titre</h3>textecouper
    <span class="texteformaterDroit">
    <a href="lien" class="menuDroit"><br />Texte complet, cliquez ici</a>
    </span></td>
    </tr>
    </table>
    avec une petite modif du CSS
    (j'ai supposé que les images sont toutes : carré 80 x 80px)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .bgPhoto 
    {
       background-image: url(../img/fond_photo.gif);
       background-repeat: no-repeat;
       padding: 10px;
       width: 100px;
       height: 100px;
    }
    A tester ...
    Dernière modification par Invité ; 06/04/2009 à 12h05.

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup.
    Pour corriger le problème j'ai créé une petite fonction qui contrôle la longueur du texte à côté et qui le coupe si c'est trop long. Comme ça j'arrive à garder une bonne mise en page, vue que la cellule à droit décale la cellule à gauche.

    Avec ce moyen, tout marche bien.

    Mais il y a t-il un moyen de mettre une image à gauche et du texte à droite sans que l'image à gauche se décalle selon le texte?

    Doit-on dans ce cas utiliser des <div>
    Cette possibilité peut être vachement interessante. Garder l'image fixe même si le texte est long.

    Pourriez-vous m'aider chers designers avec un exemple ?

    Merci bcp

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    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 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Tu peux garder ton vertical-align sur ta cellule de gauche, mais il faut en plus de ça aligner verticalement ton fond, en rajoutant dans ton CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    background-position : center center;

  10. #10
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup à vous 2.
    Je teste les deux possibilités et vous tiens au courant. Promis

  11. #11
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Comme promis, j'ai essayé les 2 méthodes proposées.
    - La méthode de Jreaux62 marche parfaitement sur tous les navigateurs.
    voici le code modifié après suggestion de Jreaux62
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <table width="540" height="100" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="100" height="100" valign="middle"><div class="bgPhoto"><a href="'.$lien.'">'.$lien_photo.'</a></div></td>
    <td width="423" valign="top" class="gauche"><h3>'.$titre.'</h3>'.$textecouper.'
    <span class="texteformaterDroit">
    <a href="'.$lien.'" class="menuDroit"><br />Texte complet, cliquez ici</a>
    </span></td>
    </tr>
    </table>
    La deuxième methode suggérée par Biensûre n'a malheureusement pas été très concluante pour IE8 Firefox 3.08 et Safari.

    Je vous remercie tous les deux pour votre aide. Je vais mettre "résolu" à cette discussion

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/07/2012, 09h30
  2. Affichage d'une image différemment selon les navigateurs
    Par CaNiBaLe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2012, 14h55
  3. Réponses: 5
    Dernier message: 15/08/2008, 16h08
  4. Réponses: 3
    Dernier message: 07/08/2008, 19h07
  5. Réponses: 6
    Dernier message: 06/06/2006, 13h22

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