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 le contenu d'un conteneur entre 2 autres conteneurs


Sujet :

Centrer un élément en CSS

  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut Centrer le contenu d'un conteneur entre 2 autres conteneurs
    Bonjour,

    Depuis ce matin je tatillonne sur mon problème sans succès alors je viens vous l'exposer. Mon conteneur (A) de taille fixe, contient 3 conteneurs (B) (C) (D) de taille variable. La condition c'est que (B) doit être tout à gauche et (D) tout à droite et que le contenu de (C) (du texte) doit être centré. Or j'ai beau tourner mon code dans tous les sens, le contenu de (C) reste obstinément à gauche comme indiqué sur le schéma.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    |=========================================|
    |                  A                      |
    |  ----  |------------------------|  ---- |
    |  |  |  |                        |  |  | |
    |  |B |  |    C                   |  |B | |
    |  |  |  |                        |  |  | |
    |  ----  |------------------------|  ---- |
    |                                         |
    |=========================================|
    Voici mon code fautif.

    HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		<div id="A">		
    			<div id="B"><img src="chat.png"/>chat</div>
    			<div id="C">Minouchette</div>
    			<div id="D">siamois</div>
    		</div>
    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
     
    #A
    {
    	background-color: rgb(223,238,253);
           -moz-border-radius: 5px;
           -webkit-border-radius: 5px;
           border: 2px solid rgb(12,88,165);  
           width: 850px;
    	height: 27px;
    	float: right;
    	font-size: x-large;
    	font-weight: bold;
    	text-align: center;
    }
     
    #B
    {
    	background-color: white;
    	float: left;
    	padding-left: 5px;
    	padding-right: 5px;
    	Border-right: 2px solid rgb(12,88,165);
    	width: auto;
     
    }
     
    #C
    {
    	Float: left;
    	width: auto;
    	text-align: center;
    }
     
    #D
    {
    	background-color: white;
    	float: right;
    	padding-left: 5px;
    	padding-right: 5px;
    	Border-left: 2px solid rgb(12,88,165);
    	width: auto;
    }
    Donc, pour résumer, ma question est : Comment réussir à centrer le contenu de C sachant que B et D pourront être de tailles différentes ?

    Merci par avance de vos éclaircissements...

  2. #2
    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 : 39
    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,

    Les éléments dotés d'un float:left s'adaptent à la largeur de leurs contenus (inutile d'indiquer un width:auto).
    Pour que cela fonctionne, il faudrait renseigner les width.

  3. #3
    Membre confirmé Avatar de Attrox
    Profil pro
    Concepteur
    Inscrit en
    Mars 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Concepteur

    Informations forums :
    Inscription : Mars 2009
    Messages : 119
    Par défaut
    tu a essayer text-align:center; dans div A sa aligne aussi les div.

  4. #4
    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 Attrox Voir le message
    tu a essayer text-align:center; dans div A sa aligne aussi les div.
    Oui mais pas le contenu des div B, C et D si je ne m'abuse, donc pas très utile ici.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Bonjour,

    Les éléments dotés d'un float:left s'adaptent à la largeur de leurs contenus (inutile d'indiquer un width:auto).
    Pour que cela fonctionne, il faudrait renseigner les width.
    Le problème de renseigner les width, c'est que la largeur ne sera plus adaptée au contenu du texte. Je souhaiterai que le contenu de C soit centrer selon la taille de C qui est déterminée par la taille variable des conteneurs B et D...

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Essaye en enlevant simplement "Float" sur C...

    Ca devrait suffire.

  7. #7
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut
    Citation Envoyé par devyan Voir le message
    Essaye en enlevant simplement "Float" sur C...

    Ca devrait suffire.
    J'avais déjà essayé... Effectivement le contenu de C est bien centré dans C, mais mon conteneur D est parti en vadrouille sur la ligne du dessous

  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 : 39
    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 niavlys77 Voir le message
    Je souhaiterai que le contenu de C soit centrer selon la taille de C qui est déterminée par la taille variable des conteneurs B et D...
    Ce n'est pas logique étant donné que A à une largeur fixe.

  9. #9
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Ce n'est pas logique étant donné que A à une largeur fixe.
    Oui, A a une largeur fixe, mais je m'assure que les longueurs B+C+D < longeur de A. A moins qu'on ne puisse mettre de conteneur de taille variable dans un conteneur à taille fixe...

  10. #10
    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 : 39
    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
    Si tu le dis ...
    Dans ce cas :
    - Tu mets C en display:inline-block (display:inline + zoom:1 pour IE7- entre commentaires conditionnelles)
    - Tu ajoutes un text-align:center; sur le conteneur A
    - Tu mets D en float:right;

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    A a une largeur fixe.
    C est dans le flux de A et fait par défaut toute la largeur (il me semble)
    B et D étant flottants le contenu de C va venir "s'enrouler" autour...

    Donc c'est tout à fait normal d'après moi.

    Edit : cependant attention au fait que A peut avoir une hauteur inférieure à celle de B et D (A a une hauteur fixe)

  12. #12
    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 : 39
    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 devyan Voir le message
    C est dans le flux de A et fait par défaut toute la largeur (il me semble)
    B et D étant flottants le contenu de C va venir "s'enrouler" autour...
    C'est bien ça le problème, C est dans le flux donc D passera en dessous
    A part "A", aucune largeur n'est renseigné !

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    C'est bien ça le problème, C est dans le flux donc D passera en dessous
    Exact, il faut que D soit placé avant C dans le source Html.

  14. #14
    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 : 39
    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
    Oui mais bon, dans tous les cas, le contenu va déborder à droite et à gauche ...
    @niavlys77 : Il faudrait au moins renseigner le width de B et D

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Si b et d sont de tailles variables et que c doit occuper le reste de l'espace entre 2, comme dit plus haut tu peux inverser l'ordre de c et d dans le html et ajouter une propriété conférant un nouveau contexte de formatage à c, par exemple:overflow:hidden;

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #C
    {
    	overflow:hidden;
    	text-align: center;
    	background-color:green;
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="A">		
    			<div id="B"><img src="chat.png"/>chat</div>
    			<div id="D">siamois</div>			
    			<div id="C">Minouchette</div>
    </div>

    (Ne pas oublier de doter #c du layout pour IE6)
    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 :resolu: si c'est le cas

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Oui mais bon, dans tous les cas, le contenu va déborder à droite et à gauche ...
    @niavlys77 : Il faudrait au moins renseigner le width de B et D
    Non impossible... Ils sont alignés sur les bord et s'agrandissent donc vers le centre.
    Le seul problème peut être de la somme des largeurs de B et D dépassent celle de A et dans ce cas ils se retrouveraient l'un sous l'autre.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par devyan Voir le message
    Non impossible... Ils sont alignés sur les bord et s'agrandissent donc vers le centre.
    Le seul problème peut être de la somme des largeurs de B et D dépassent celle de A et dans ce cas ils se retrouveraient l'un sous l'autre.
    Ben disons que si le contenu de C est plus haut que B et/ou D il viendra s'étendre au-dessous de ces derniers pour occuper tous l'espace à disposition en largeur, d'où ma proposition d'un nouveau contexte de formatage sur C pour le prévenir
    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 :resolu: si c'est le cas

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Citation Envoyé par Candygirl Voir le message
    Ben disons que si le contenu de C est plus haut que B et/ou D son contenu viendra s'étendre au-dessous de ces derniers pour occuper tous l'espace à disposition en largeur, d'où ma proposition d'un nouveau contexte de formatage sur C pour le prévenir
    Tu veux dire sur A pas sur C alors...

    C'est A le conteneur.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 912
    Par défaut
    Citation Envoyé par devyan Voir le message
    Tu veux dire sur A pas sur C alors...
    Non, non, sur C
    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 :resolu: si c'est le cas

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Citation Envoyé par niavlys77 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    |=========================================|
    |                  A                      |
    |  ----  |------------------------|  ---- |
    |  |  |  |                        |  |  | |
    |  |B |  |    C                   |  |D | |
    |  |  |  |                        |  |  | |
    |  ----  |------------------------|  ---- |
    |                                         |
    |=========================================|
    ...

    Donc, pour résumer, ma question est : Comment réussir à centrer le contenu de C sachant que B et D pourront être de tailles différentes ?
    je viens de voir ceci... Donc nous n'avons répondu qu'à une partie du problème...

    C doit toujours être au centre de A ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [CSS] centrer le contenu de <table>
    Par H-bil dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 10/06/2006, 16h44
  2. [VB6]Comment centrer le contenu d'une cellule
    Par zackrel dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 19/05/2006, 20h02
  3. [HTML] Centrer le contenu d'une zone de texte
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 16/03/2006, 00h34
  4. [HTML] Centrer le contenu d'une zone de texte
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 15/03/2006, 17h10
  5. [CSS] Centrer le contenu d'une Div
    Par bolo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/03/2006, 19h18

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