Comment aligner un point mort d'image avec bootstrap

207

J'utilise le framework bootstrap et j'essaie d'obtenir une image centrée horizontalement sans succès ..

J'ai essayé diverses techniques telles que la division du système à 12 grilles en 3 blocs égaux, par exemple

<div class="container">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>

Quelle est la méthode la plus simple pour centrer une image par rapport à la page?

Fixateur
la source
Et btw. vous voudrez peut-être jeter un œil à la section "Colonnes de décalage". twitter.github.com/bootstrap/scaffolding.html#gridSystem
mind85
Quelqu'un a signalé que ce n'était pas une réponse, et je suis d'accord. Veuillez l'ajouter en tant que commentaire et votre réponse sera supprimée sous peu.
tckmn
1
Si vous avez de la img-responsiveclasse sur votre imgtag, l'image peut ne pas se centrer. Voir cette réponse SO pour une explication des raisons pour lesquelles l'utilisation de lacenter-blockclassebootstraprésoudra ce problème de la manière bootstrap.
cssyphus
Si vous utilisez le bootstrap, vous pouvez le faire: stackoverflow.com/a/59469712/4654957
Diego Venâncio

Réponses:

271

Twitter Bootstrap v3.0.3 a une classe: bloc central

Blocs de contenu du centre

Définissez un élément à afficher: bloquer et centrer via la marge. Disponible en mixin et en classe.

Il suffit d'ajouter une classe .center-blockdans la imgbalise, ressemble à ceci

<div class="container">
  <div class="row">
    <div class="span4"></div>
    <div class="span4"><img class="center-block" src="logo.png" /></div>
    <div class="span4"></div>
  </div>
</div>

Dans Bootstrap a déjà un appel de style CSS .center-block

.center-block {
    display: block;
    margin-left: auto;
    margin-right: auto;
 }

Vous pouvez voir un échantillon d' ici

user3098434
la source
1
la </div>balise de fermeture sur le containerdiv semble manquante. cela ne fonctionne pas pour moi sur la v3.3.7
tarabyte
141

La bonne façon de procéder est

<div class="row text-center">
  <img ...>
</div>
fabiangebert
la source
25
cela n'a pas fonctionné pour moi lors de son utilisation - startbootstrap.com/round-about .. mais l'ajout d'une classe center-blockaux <img>éléments a fonctionné ..
Sumeet Pareek
3
text-center ne fonctionnera pas sur les images avec la classe img-responsive mais le commentaire ci-dessus (à propos du bloc central) résout ce problème
trojan
Une observation: dans Bootstrap v3.1.0, il est possible de centrer img-responsive dans la colonne en ajoutant text-center à la colonne. Ce comportement est rompu dans la v3.3.4. Très ennuyant. Css suce.
f470071
vous devez utiliser le bloc central à la place, comme indiqué dans les documents: getbootstrap.com/css/#images-responsive
Nacho
95

Mise à jour 2018

La center-blockclasse n'existe plus dans Bootstrap 4 . Pour centrer une image dans Bootstrap 4, utilisez mx-auto d-block...

<img src="..." class="mx-auto d-block"/>
Zim
la source
6
Juste pour ajouter une petite explication à 'Update 2018': mx-auto définit les marges gauche et droite sur auto; affichage des ensembles de blocs d: bloc
Michael Moriarty
85

Ajoutez le «bloc central» à l'image en tant que classe - aucun CSS supplémentaire n'est requis

<img src="images/default.jpg" class="center-block img-responsive"/>
adswebwork
la source
8
Je ne sais pas pourquoi le -1 - C'EST DE loin la meilleure réponse! Il utilise la génération de classe d'assistance dans Bootstrap.
user2562923
4
Dans bootstrap 4, utilisez mx-autoau lieu decenter-block
Quantum7
52

Twitter bootstrap a une classe qui se centre: centrée sur la pagination

Cela a fonctionné pour moi de faire:

<div class="row-fluid">
   <div class="span12 pagination-centered"><img src="header.png" alt="header" /></div>
</div>

Le CSS pour la classe est:

.pagination-centered {
  text-align: center;
}
David Silva Smith
la source
18
Ou peut .text-center- être en classe?
trejder
36

Vous pouvez utiliser ce qui suit. Il prend en charge Bootstrap 3.x ci-dessus.

<img src="..." alt="..." class="img-responsive center-block" />
Dulith De Costa
la source
Merci pour cela. Juste ce dont j'avais besoin aujourd'hui.
Ryan Wilson
28

En supposant qu'il n'y a rien d'autre à côté de l'image, la meilleure façon est d'utiliser text-align: centerdans le imgparent:

.row .span4 {
    text-align: center;
}

Éditer

Comme mentionné dans les autres réponses, vous pouvez ajouter la classe CSS d'amorçage .text-centerà l'élément parent. Cela fait exactement la même chose et est disponible à la fois en v2.3.3 et en v3

J'ai mal à la tête
la source
Parfait - Cela fait le travail. Mais disons que j'ai un élément <ul> sous l'image ... Cela n'aligne pas le centre comme prévu, est-ce que je peux ajouter quelque chose? Merci
Fixer
1
Depuis .row dans l'une des classes de base du twitter bootstrap. Je recommanderais de définir une nouvelle classe comme sur cette page twitter.github.com/bootstrap/index.html avec le masthead de classe.
baptme
1
@Fixer Le <ul>devrait toujours aligner le centre: jsfiddle.net/N74N7/1 Il doit y avoir un autre code CSS qui l'affecte
My Head Hurts
passé plus de 2 ou 3 heures et seulement cette ligne ... merci!
alamin
18

Travaille pour moi. essayez d'utilisercenter-block

<div class="container row text-center">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img class="center-block" src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>
Leroy Gumede
la source
6

J'ai besoin de la même chose et j'ai trouvé la solution:

https://stackoverflow.com/a/15084576/1140407

<div class="container">
  <div class="row">
    <div class="span9 centred">
      This div will be centred.
    </div>
  </div>
</div>

et au CSS:

[class*="span"].centred {
  margin-left: auto;
  margin-right: auto;
  float: none;
}
Shiv
la source
Je pense que les gens de bootstrap doivent l'ajouter à leur css
Muhammad Ahsan
Salut et merci! J'utilise Bootstrap v3 maintenant. J'ai ajouté cela à ma div de conteneur img, j'ai donc dû spécifier la largeur exacte (au moins) pour ma div pour que les choses fonctionnent. Si vous n'avez pas de conteneur ou des tailles d'image variables, ajoutez cette classe à votre image.
Inan
1

Vous pouvez utiliser la propriété margin avec la classe bootstrap img.

.name-of-class .img-responsive { margin: 0 auto; }
Venkatesh Rajavetrivel
la source
1

Il semble que nous pourrions utiliser une nouvelle fonctionnalité HTML5 si la version du navigateur n'est pas un problème:

dans les fichiers HTML:

<div class="centerBloc">
  I will be in the center
</div>

Et en fichier CSS, on écrit:

body .centerBloc {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

Et donc le div pourrait être parfaitement centré dans le navigateur.

Laurent
la source
3
La classe de votre div s'appelle .centerBloc et le fichier css affiche body.loadingDiv ...
Martin
Corrigé maintenant @Martin
dtechplus
0

Tu devrais utiliser

<div class="row fluid-img">
  <img class="col-lg-12 col-xs-12" src="src.png">
</div>

.fluid-img {
    margin: 60px auto;
}

@media( min-width: 768px ){
        .fluid-img {
            max-width: 768px;
        }
}
@media screen and (min-width: 768px) {
        .fluid-img {
            padding-left: 0;
            padding-right: 0;
        }
}
ed3d
la source
0

J'utilise justify-content-centerclasse pour une ligne dans un conteneur. Fonctionne bien avec Bootstrap 4.

<div class="container-fluid">
  <div class="row justify-content-center">
   <img src="logo.png" />
  </div>
</div>
bassment
la source
0

J'ai créé cela et ajouté à Site.css.

.img-responsive-center {
    display: block;
    height: auto;
    max-width: 100%;
    margin-left:auto;
    margin-right:auto;
}
Chris Catignani
la source
-3

Vous pouvez changer le CSS de la solution précédente comme ci-dessous:

.container, .row { text-align: center; }

Cela devrait également centrer tous les éléments dans le parent div.

Nandu
la source