Comment horizontalement centre flottant élément d'une largeur variable?

comment centrer horizontalement un élément flottant d'une largeur variable?

modifier: j'ai déjà ce travail en utilisant un contenant div pour l'élément flottant et en spécifiant un width pour le conteneur (puis utiliser margin: 0 auto; pour le conteneur). Je voulais juste savoir si cela pouvait être fait sans utiliser un élément contenant ou du moins sans avoir à spécifier un width pour l'élément contenant.

53
demandé sur Barney 2009-08-05 13:22:32

7 réponses

en supposant que l'élément qui est flotté et sera centré est un div avec un id="content" ...

<body>
<div id="wrap">
   <div id="content">
   This will be centered
   </div>
</div>
</body>

et appliquer le CSS suivant:

#wrap {
    float: left;
    position: relative;
    left: 50%;
}

#content {
    float: left;
    position: relative;
    left: -50%;
}

voici un bon référence à ce sujet.

89
répondu Leyu 2014-12-01 09:39:51
.center {
  display: table;
  margin: auto;
}
65
répondu 2012-04-10 23:09:08

dites que vous avez un DIV vous voulez centré horizontalement:

 <div id="foo">Lorem ipsum</div>

dans le CSS vous le stylisez avec ceci:

#foo
{
  margin:0 auto; 
  width:30%;
}

qui indique que vous avez une marge supérieure et inférieure de zéro pixels, et à gauche ou à droite, automatiquement calculer combien il est nécessaire d'être pair.

n'a pas vraiment d'importance ce que vous mettez pour la largeur, tant qu'il est là et n'est pas 100%. Sinon vous ne seriez pas de réglage le centre de quoi que ce soit.

mais si vous le faites flotter, à gauche ou à droite, alors les paris sont éteints puisque cela le sort du flux normal d'éléments sur la page et le réglage de marge automatique ne fonctionnera pas.

4
répondu random 2009-08-05 09:31:43

vous pouvez utiliser fit-content valeur pour width .

#wrap {
  width: -moz-fit-content;
  width: -webkit-fit-content;
  width: fit-content;
  margin: auto;   
}

Note: cela ne fonctionne que dans les derniers navigateurs.

4
répondu Fizer Khan 2014-01-02 17:32:05

la réponse populaire ici ne fonctionne parfois, mais d'autres fois, il crée des barres de défilement horizontales qui sont difficiles à traiter - en particulier lorsqu'il s'agit de larges navigations horizontales et de grands menus tirer vers le bas. Voici encore plus léger version permet d'éviter ces cas limites:

#wrap {
    float: right;
    position: relative;
    left: -50%;
}
#content {
    left: 50%;
    position: relative;
}

preuve qu'il fonctionne!

pour répondre plus spécifiquement à votre question, il est probablement pas possible de faire sans mettre en place un élément contenant, cependant il est très possible de faire sans spécifier une valeur de largeur. L'espoir qui sauve quelqu'un là-bas quelques maux de tête!

4
répondu fohryan 2014-06-21 18:25:21

cela fonctionne mieux quand id = conteneur (qui est la div externe) et id = contenu (qui est la div interne). Le problème avec la solution fortement recommandée est qu'il résulte dans certains cas dans une barre de défilement horizontale lorsque le navigateur essaie de répondre à la gauche: -50% attribut. il y a une bonne référence pour cette solution

        #container {
            text-align: center;
        }
        #contained {
            text-align: left;
            display: inline-block;
        }
2
répondu Vianney Sserwanga 2018-05-01 17:10:54

ne pouvez-vous pas juste utiliser display: inline block et align à center ?

exemple .

0
répondu Kai 2014-01-02 17:34:36