Je réalise un catalogue à l'aide de Bootstrap 3. Les images du produit, lorsqu'elles sont affichées sur des tablettes, sont laides en raison de leur petite taille (500x500) et d'une largeur de 767 pixels dans le navigateur. Je veux mettre l'image au centre de l'écran, mais pour une raison quelconque, je ne peux pas. Qui sera aidera à résoudre le problème?
Si vous utilisez Bootstrap v3.0.1 ou supérieur, vous devriez utiliser cette solution à la place. Il ne remplace pas les styles de Bootstrap par des CSS personnalisées, mais utilise plutôt une fonctionnalité Bootstrap.
Ma réponse originale est indiquée ci-dessous pour la postérité
C'est une solution agréablement facile. Comme .img-responsive
de Bootstrap définit déjà display: block
, vous pouvez utiliser margin: 0 auto
pour centrer l'image:
.product .img-responsive {
margin: 0 auto;
}
Il y a .center-block
class dans Twitter Bootstrap 3 (Since v3.0.1), utilisez donc:
<img src="..." alt="..." class="img-responsive center-block" />
Ajoutez uniquement la classe center-block
à une image, cela fonctionne également avec Bootstrap 4:
<img src="..." alt="..." class="center-block" />
Remarque: center-block
fonctionne même lorsque img-responsive
est utilisé
Utilisez simplement .text-center
class si vous utilisez Bootstrap 3.
<div class="text-center">
<img src="..." alt="..."/>
</div>
Remarque: cela ne fonctionne pas avec img-responsive
Cela devrait centrer l'image et la rendre sensible.
<img src="..." class="img-responsive" style="margin:0 auto;"/>
Je suggérerais une classification plus "abstraite". Ajoutez une nouvelle classe "img-center" qui peut être utilisée en combinaison avec la classe .img-responsive:
// Center responsive images
.img-responsive.img-center {
margin: 0 auto;
}
Vous pouvez toujours travailler avec img-responsive
sans impacter les autres images avec cette classe de style.
Vous pouvez faire précéder cette balise de la section id/div id/class pour définir un ordre dans lequel cette img
est imbriquée. Ce img-responsive
personnalisé ne fonctionnera que dans cette zone.
Supposons que vous ayez une zone HTML définie comme suit:
<section id="work">
<div class="container">
<div class="row">
<img class="img-responsive" src="some_image.jpg">
</div>
</div>
</section>
Ensuite, votre CSS peut être:
section#work .img-responsive{
margin: 0 auto;
}
Remarque: cette réponse concerne l'impact potentiel de la modification de img-responsive
dans son ensemble. Bien entendu, center-block
est la solution la plus simple.
Essaye ça:
.img-responsive{
display: block;
height: auto;
max-width: 100%;
margin:0 auto;
}
.Image{
background:#ccc;
padding:30px;
}
<div class="Image">
<img src="http://minisoft.com.bd/uploads/ourteam/rafiq.jpg" class="img-responsive" title="Rafique" alt="Rafique">
</div>
Pour ajouter aux réponses déjà données, le fait d'avoir le img-responsive
en combinaison avec img-thumbnail
définira display: block
sur display: inline block
.
Essayez ce code, cela fonctionnera aussi pour les petites icônes avec bootstrap 4 car il n’existe pas de classe de bloc central, c’est donc bootstrap 4, alors essayez cette méthode, elle vous sera utile. Vous pouvez modifier la position de l'image en définissant le .col-md-12
sur .col-md-8
ou .col-md-4
, il vous appartient.
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="text-xs-center text-lg-center">
<img src="" class="img-thumbnail">
</div>
</div>
</div>
</div>
<div class="col-md-12 text-center">
<img class="img-responsive tocenter" />
</div>
.
<style>
.tocenter {
margin:0 auto;
display: inline;
}
</style>
@media (max-width: 767px) {
img {
display: table;
margin: 0 auto;
}
}
Il suffit de placer toutes les images miniatures dans un div/ligne comme ceci:
<div class="row text-center">
<div class="col-12">
# your images here...
</div>
</div>
et tout ira bien!
Jusqu'ici, la meilleure solution à accepter semble être <img class="center-block" ... />
. Mais personne n'a mentionné comment fonctionne center-block
.
Prenez par exemple Bootstrap v3.3.6:
.center-block {
display: block;
margin-right: auto;
margin-left: auto;
}
La valeur par défaut de dispaly
pour <img>
est inline
. La valeur block
affichera un élément en tant qu'élément de bloc (comme <p>
). Il commence sur une nouvelle ligne et occupe toute la largeur. De cette manière, les deux paramètres de marge permettent à l’image de rester horizontalement au centre.
La méthode la plus exacte appliquée à tous les objets Booostrap utilisant uniquement des classes standard consisterait à ne pas définir les marges supérieure et inférieure (car image peut hériter de celles du parent). Par conséquent, j'utilise toujours:
.text-center .img-responsive {
margin-left: auto;
margin-right: auto;
}
J'ai également fait une Gist pour cela, donc si des modifications s’appliquent à cause de bugs, la version de mise à jour sera toujours ici: https://Gist.github.com/jdrda/09a38bf152dd6a8aff4151c58679cc66
Vous pouvez le corriger avec la marge de définition: 0 auto
ou vous pouvez aussi utiliser col-md-offset
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<style>
.img-responsive{
margin:0 auto;
}
</style>
<body>
<div class="container">
<h2>Image</h2>
<div class="row">
<div class="col-md-12">
<p>The .img-responsive class makes the image scale nicely to the parent element (resize the browser window to see the effect):</p>
<img src="http://www.w3schools.com/bootstrap/cinqueterre.jpg" class="img-responsive" alt="Cinque Terre" width="304" height="236">
</div>
</div>
</div>
</body>
</html>