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?


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


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>

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"/>

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"/>

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;
}

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" />

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


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>

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;
}

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; }

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.


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;
        }
}

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>

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;
}

-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.