ChatGPT解决这个技术问题 Extra ChatGPT

Responsive image align center bootstrap 3

I do a catalog using Bootstrap 3. When displayed on tablets, the product images look ugly because of their small size (500x500) and a width of 767 pixels in the browser. I want to put the image in the center of the screen, but for some reason I can not. Who be will help solve the problem?

https://i.stack.imgur.com/bwJiHm.jpg

I like the design of your site and products - nice work :)
Another example of "Why we need place code into question body".
Try this Boostrap Class in parent element: img d-flex justify-content-center border border-light p-5

H
Hashem Qolami

There is .center-block class in Twitter Bootstrap 3 (Since v3.0.1), so use:

<img src="..." alt="..." class="img-responsive center-block" />

This should be the accepted answer, as you do not need to add any CSS to use it.
class="img-responsive" style="margin: 0 auto;" works for me class="img-responsive center-block" does not (bootstrap 3, but a version a few month old)
Align center does not work when img-responsive is used.
@DHlavaty can you explain the difference between using .img-responsive AND .center-block and just using .img-responsive with an auto margin like the accepted answer suggests? is one method more robust?
You might not want to use this if your image is supposed to be clickable. That is, if it is wrapped inside a <a href="#"> </a> pair, the clickable area will get expanded to the full width of the enclosing container which might be quite a bit larger than your image. This may confuse users who click on what they think is "empty" space.
C
Community

If you're using Bootstrap v3.0.1 or greater, you should use this solution instead. It doesn't override Bootstrap's styles with custom CSS, but instead uses a Bootstrap feature.

My original answer is shown below for posterity

This is a pleasantly easy fix. Because .img-responsive from Bootstrap already sets display: block, you can use margin: 0 auto to center the image:

.product .img-responsive {
    margin: 0 auto;
}

It's probably better to create a new class with margin: 0 auto, rather than changing .img-responsive.
That's a thought, although personally I can't think of anywhere I'd want a responsive image not centered, especially with this design. It all depends on the use case, and what's going to happen in the future
Please see this answer if you are using Bootstrap v4 or higher: stackoverflow.com/a/43293957/4102515
H
Harry Bosh

Add only the class center-block to an image, this works with Bootstrap 4 as well:

<img src="..." alt="..." class="center-block" />

Note: center-block works even when img-responsive is used


Best response, but underrated. That's why you use a framework!
So. Fantastic. Thank you
Its Work..Thanks
S
Sai Kiran Sripada

Just use .text-center class if you're using Bootstrap 3.

<div class="text-center">
    <img src="..." alt="..."/>
</div>

Note: This doesn't work with img-responsive


The question is about img-responsive
For img-responsive add img-center (tested on 3.3.6) for those that might see this on google searches
n
nPcomp

This should center the image and make it responsive.

<img src="..." class="img-responsive" style="margin:0 auto;"/>

M
Michael

I would suggest a more "abstract" classification. Add a new class "img-center" which can be used in combination with .img-responsive class:

// Center responsive images
.img-responsive.img-center {
  margin: 0 auto;
}

P
Power Engineering

Simply put all the images thumbnails inside a row/col divs like this:

<div class="row text-center">
 <div class="col-12">
  # your images here...
 </div>
</div>

and everything will work fine!


A
Ahmed
@media (max-width: 767px) {
   img {
     display: table;
     margin: 0 auto;
   }
}

Why display: table? It's already display: block which is enough to get margin: 0 auto to work
K
KannarKK

You can still work with img-responsive without impacting other images with this style class.

You can precede this tag with the section id/ div id/class to define a order within which this img is nested. This custom img-responsive will work only in that area.

Suppose you have a HTML area defined as:

<section id="work"> 
    <div class="container">
        <div class="row">
            <img class="img-responsive" src="some_image.jpg">
        </div>
    </div>
</section>

Then, your CSS can be:

section#work .img-responsive{
    margin: 0 auto;
}

Note: This answer is in relation to the potential impact of altering img-responsive as a whole. Of course, center-block is the simplest solution.


This answer is under appreciated, wrapping the image in the row class is crucial in centering the image when there is a text under the image.
D
Draken

Try this code it will work for small icons too with bootstrap 4 because there is no center-block class is bootstrap 4 so try this method it will be helpful. You can change the position of the image by setting the .col-md-12 to .col-md-8 or .col-md-4, it's upto you.

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

R
Rafiqul Islam

Try this:

.img-responsive{ display: block; height: auto; max-width: 100%; margin:0 auto; } .Image{ background:#ccc; padding:30px; }

Rafique


S
Sourabh Potnis

You can use property of d-block here or you can use a parent div with property 'text-center' in bootstrap or 'text-align: center' in css.

Image by default is displayed as inline-block, you need to display it as block in order to center it with .mx-auto. This can be done with built-in .d-block:

<div>
    <img class="mx-auto d-block" src="...">  
</div>

Or leave it as inline-block and wrapped it in a div with .text-center:

<div class="text-center">
    <img src="...">  
</div>

M
M. Oranje

To add to the answers already given, having the img-responsive in combination with img-thumbnail will set display: block to display: inline block.


u
user956584
<div class="col-md-12 text-center">
    <img class="img-responsive tocenter" />
</div>

.

<style>
   .tocenter {
    margin:0 auto;
    display: inline;
    }
</style>

r
riverhorse
<div class="text-align" style="text-align: center;  ">
    <img class="img-responsive" style="margin: auto;" alt="" src="images/x.png ?>">
</div>

you can try this.


C
Community

You can fix it with defining margin:0 auto or you can use col-md-offset also

Image

The .img-responsive class makes the image scale nicely to the parent element (resize the browser window to see the effect):

Cinque Terre


L
LordMagik

The more exact way applied to all Booostrap objects using standard classes only would be to not set top and bottom margins (as image can inherit these from parent), so I am always using:

.text-center .img-responsive {
    margin-left: auto;
    margin-right: auto;
}

I have also made a Gist for that, so if any changes will apply because of any bugs, update version will be always here: https://gist.github.com/jdrda/09a38bf152dd6a8aff4151c58679cc66


t
themefield

So far the best solution to accept seems to be <img class="center-block" ... />. But no one has mentioned how center-block works.

Take Bootstrap v3.3.6 for example:

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

The default value of dispaly for <img> is inline. Value block will display an element as a block element (like <p>). It starts on a new line, and takes up the whole width. In this way, the two margin settings let the image stay in the middle horizontally.


C
CodeToLife

2021.09 from a project:

                    <div class="d-flex" style="height: 60px; width: 60px;">
                            <img alt="ddd" src="myurl" class="m-auto"/>
                    </div>