Адаптивный образ выравнивания по центру начальной загрузки 3


423

Я делаю каталог, используя Bootstrap 3. При отображении на планшетах изображения товара выглядят некрасиво из-за их небольшого размера (500х500) и ширины 767 пикселей в браузере. Я хочу поместить изображение в центр экрана, но почему-то не могу. Кто поможет решить проблему?

Снимок экрана: часть страницы товара с товаром, не центрированным под заголовком


5
Мне нравится дизайн вашего сайта и продуктов - хорошая работа:)
Bojangles

7
Другой пример «Почему нам нужно поместить код в тело вопроса».
ЛЕКАДА

Ответы:


572

Если вы используете Bootstrap v3.0.1 или выше, вам следует использовать это решение . Он не переопределяет стили Bootstrap с помощью пользовательского CSS, но вместо этого использует функцию Bootstrap.

Мой оригинальный ответ показан ниже для потомков


Это приятно легко исправить. Поскольку .img-responsiveиз Bootstrap уже установлены display: block, вы можете использовать margin: 0 autoдля центрирования изображения:

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

35
Вероятно, лучше создать новый класс margin: 0 auto, чем изменять .img-отзывчивый.
вязать

4
Это мысль, хотя лично я ни о чем не могу думать, я бы хотел, чтобы адаптивное изображение не центрировалось, особенно с этим дизайном. Все зависит от варианта использования и того, что произойдет в будущем
Bojangles

Пожалуйста, посмотрите этот ответ, если вы используете Bootstrap v4 или
новее

1156

В .center-blockTwitter Bootstrap 3 есть класс ( начиная с версии 3.0.1 ), поэтому используйте:

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

27
Это должен быть принятый ответ, так как вам не нужно добавлять CSS для его использования.
user2602152

16
class="img-responsive" style="margin: 0 auto;"у меня class="img-responsive center-block"не работает (bootstrap 3, но версия несколько месяцев назад)
mxro

9
Выравнивание по центру не работает, когда используется img-отзывчивый.
Исмаэль

1
@DHlavaty Можете ли вы объяснить разницу между использованием .img-отзывчивого AND .center-block и простым использованием .img-отзывчивого с автоматическим запасом, как предполагает принятый ответ? один метод более надежен?
user137717

1
Возможно, вы не захотите использовать это, если ваше изображение должно быть кликабельным. То есть, если он обернут внутри <a href="#"> </a>пары, кликабельная область будет расширена до полной ширины вмещающего контейнера, которая может быть немного больше, чем ваше изображение. Это может запутать пользователей, которые нажимают на то, что они считают «пустым» пространством.
CXJ

108

Добавьте только класс center-blockк изображению, это также работает с Bootstrap 4:

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

Примечание: center-blockработает, даже когда img-responsiveиспользуется


6
Лучший ответ, но недооцененный. Вот почему вы используете фреймворк!
Baumannzone

Так. Фантастический. Спасибо
AndrewLeonardi

Его работа .. Спасибо
Dhiren Patel

31

Просто используйте .text-centerкласс, если вы используете Bootstrap 3.

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

Примечание: это не работает с IMG-отзывчивым


1
Речь идет оimg-responsive
Алексей Косов

Для img-отзывчивого добавьте img-center (протестировано на 3.3.6) для тех, кто может увидеть это в поиске в Google
DardanM

10

Это должно центрировать изображение и сделать его отзывчивым.

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

6

Я бы предложил более «абстрактную» классификацию. Добавьте новый класс "img-center", который можно использовать в сочетании с классом .img-responseive:

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

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

2
Почему display: table? Этого уже display: blockдостаточно, чтобы приступить margin: 0 autoк работе
Bojangles

3

Вы все еще можете работать img-responsiveбез влияния на другие изображения с этим классом стиля.

Вы можете добавить к этому тегу раздел id / div id / class, чтобы определить порядок, в котором imgон вложен. Этот обычай img-responsiveбудет работать только в этой области.

Предположим, у вас есть HTML-область, определенная как:

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

Тогда ваш CSS может быть:

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

Примечание. Этот ответ связан с потенциальным воздействием изменения img-responsiveв целом. Конечно, center-blockэто самое простое решение.


Этот ответ недооценивается, упаковка изображения в классе строк имеет решающее значение для центрирования изображения, когда под изображением находится текст.
Гленн Плас

3

Попробуйте этот код, он будет работать и для маленьких значков с начальной загрузкой 4, потому что нет центра класса блока, который является начальной загрузкой 4, поэтому попробуйте этот метод, это будет полезно. Вы можете изменить положение изображения, установив .col-md-12в .col-md-8или .col-md-4, это ДО вас.

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

3

Попробуй это:

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


3

Просто поместите все миниатюры изображений внутри строк / столбцов:

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

и все будет работать нормально!


2

Для того, чтобы добавить к ответам уже данных, имея img-responsiveв сочетании с img-thumbnailустановят display: blockна display: inline block.


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

,

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

0

Вы можете исправить это с помощью определения поля: 0 авто

или вы также можете использовать 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>


0

Более точным способом, применяемым ко всем объектам Booostrap с использованием только стандартных классов, было бы не устанавливать верхнее и нижнее поля (так как изображение может наследовать их от родительского), поэтому я всегда использую:

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

Я также сделал Gist для этого, поэтому, если какие-либо изменения будут применены из-за каких-либо ошибок, версия обновления будет всегда здесь: https://gist.github.com/jdrda/09a38bf152dd6a8aff4151c58679cc66


0

Пока что, похоже, лучшим решением является принятие <img class="center-block" ... />. Но никто не упомянул, как center-blockработает.

Возьмите Bootstrap v3.3.6, например:

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

Значением по умолчанию dispalyдля <img>является inline. Значение blockбудет отображать элемент как блочный элемент (например <p>). Он начинается с новой строки и занимает всю ширину. Таким образом, две настройки полей позволяют изображению оставаться посередине по горизонтали.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.