Центрировать изображение по горизонтали в пределах div

Вероятно, это глупый вопрос, но поскольку обычные способы выравнивания изображения по центру не работают, я подумал, что задам этот вопрос. Как я могу выровнять по центру (по горизонтали) изображение внутри его контейнера div?

Здесь HTML и CSS. Я также включил CSS для других элементов миниатюры. Он работает в порядке убывания, поэтому самый высокий элемент - это контейнер всего, а самый низкий - внутри всего.

#thumbnailwrapper {
      color: #2A2A2A;
      margin-right: 5px;
      border-radius: 0.2em;
      margin-bottom: 5px;
      background-color: #E9F7FE;
      padding: 5px;
      border: thin solid #DADADA;
      font-size: 15px
}
    
#artiststhumbnail {
      width: 120px;
      height: 108px;
      overflow: hidden;
      border: thin solid #DADADA;
      background-color: white;
}
    
#artiststhumbnail:hover {
      left: 50px
}
<!--link here-->

<a href="NotByDesign">
  <div id="thumbnailwrapper">

    <a href="NotByDesign">

      <!--name here-->
      <b>Not By Design</b>
      <br>

      <div id="artiststhumbnail">

        <a href="NotByDesign">

          <!--image here-->
          <img src="../files/noprofile.jpg" height="100%" alt="Not By Design" border="1" />
        </a>
      </div>

      <div id="genre">Punk</div>

  </div>

Ответ 2

CSS flexbox может сделать это с помощью justify-content: center на родительском элементе изображения. Чтобы сохранить соотношение сторон изображения, добавьте к нему align-self: flex-start;.

HTML

<div class="image-container">
  <img src="http://placehold.it/100x100" />
</div>

CSS

.image-container {
  display: flex;
  justify-content: center;
}

Выход:

body {
  background: lightgray;
}
.image-container {
  width: 200px;
  display: flex;
  justify-content: center;
  margin: 10px;
  padding: 10px;
  /* Material design properties */
  background: #fff;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}
.image-2 {
  width: 500px;
  align-self: flex-start;  /* to preserve image aspect ratio */
}
.image-3 {
  width: 300px;
  align-self: flex-start;  /* to preserve image aspect ratio */
}
<div class="image-container">
  <img src="http://placehold.it/100x100" />
</div>

<div class="image-container image-2">
  <img src="http://placehold.it/100x100/333" />
</div>

<div class="image-container image-3">
  <img src="http://placehold.it/100x100/666" />
</div>

Ответ 3

Я только что нашел это решение ниже на странице CSS W3, и оно ответило на мою проблему.

img {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

Источник: http://www.w3.org/Style/Examples/007/center.en.html.

Ответ 4

Это также сделало бы это

#imagewrapper {
    text-align:center
}

#imagewrapper img {
    display:inline-block;
    margin:0 5px
}

Ответ 5

Лучшее, что я нашел (кажется, работает во всех браузерах) для центрирования изображения или любого элемента по горизонтали, - это создать класс CSS и включить следующие параметры:

CSS

.center {
    position: relative;          /* where the next element will be automatically positioned */
    display: inline-block;       /* causes element width to shrink to fit content */
    left: 50%;                   /* moves left side of image/element to center of parent element */
    transform: translate(-50%);  /* centers image/element on "left: 50%" position */
}

Затем вы можете применить созданный вами класс CSS к вашему тегу следующим образом:

HTML

<img class="center" src="image.jpg" />

Вы также можете встроить CSS в ваши элементы, выполнив следующие действия:

<img style="position: relative; display: inline-block; left: 50%; transform: translate(-50%);" src ="image.jpg" />

... но я бы не рекомендовал писать встроенный CSS, потому что тогда вам придется вносить множественные изменения во все ваши теги, используя центрирующий код CSS, если вы когда-нибудь захотите изменить стиль.

Ответ 6

Это то, что я в итоге сделал:

<div style="height: 600px">
   <img src="assets/zzzzz.png" alt="Error" style="max-width: 100%; 
        max-height: 100%; display:block; margin:auto;" />
</div>

Это ограничит высоту изображения до 600px и будет горизонтальным центром (или уменьшением размера, если родительская ширина меньше) относительно родительского контейнера, сохраняя пропорции.

Ответ 7

Я собираюсь выйти на конечность и сказать, что следующее - это то, что вам нужно.

Обратите внимание, что, по моему мнению, в вопросе случайно не указано (см. комментарий):

<div id="thumbnailwrapper"> <!-- <<< This opening element -->
    <div id="artiststhumbnail">
...

Итак, вам нужно:

#artiststhumbnail {
    width:120px;
    height:108px;
    margin: 0 auto; /* <<< This line here. */
    ...
}

http://jsfiddle.net/userdude/XStjX/3/

Ответ 8

Добавьте это в свой CSS:

#artiststhumbnail a img {
   display: block;
   margin-left: auto;
   margin-right: auto;
}

Просто ссылка на дочерний элемент, который в этом случае является изображением.

Ответ 9

Для центрирования изображения по горизонтали это работает:

<p style="text-align:center"><img src=""></p>

Ответ 10

Поместите равные пиксельные отступы для левого и правого:

<div id="artiststhumbnail" style="padding-left:ypx;padding-right:ypx">

Ответ 11

Поместите изображение внутри newDiv. Сделайте ширину содержащего div той же, что и изображение. Примените margin: 0 auto; к newDiv. Это должно центрировать div внутри контейнера.

Ответ 12

Используйте позиционирование. Следующие работали для меня... (по горизонтали и по вертикали)

С увеличением до центра изображения (изображение заполняет div):

div{
    display:block;
    overflow:hidden;
    width: 70px; 
    height: 70px;  
    position: relative;
}
div img{
    min-width: 70px; 
    min-height: 70px;
    max-width: 250%; 
    max-height: 250%;    
    top: -50%;
    left: -50%;
    bottom: -50%;
    right: -50%;
    position: absolute;
}

Без масштабирования до центра изображения (изображение не заполняет div):

   div{
        display:block;
        overflow:hidden;
        width: 100px; 
        height: 100px;  
        position: relative;
    }
    div img{
        width: 70px; 
        height: 70px; 
        top: 50%;
        left: 50%;
        bottom: 50%;
        right: 50%;
        position: absolute;
    }

Ответ 13

вы можете выровнять свой контент с помощью гибкой рамки с минимальным кодом

HTML

<div class="image-container">
<img src="https://image.freepik.com/free-vector/modern-abstract-background_1048-1003.jpg" width="100px"> 
</div>

CSS

.image-container{
  width:100%;
  background:green;
  display:flex;

.image-container{
  width:100%;
  background:green;
  display:flex;
  justify-content: center;
  align-items:center;
}
<div class="image-container">
<img src="https://image.freepik.com/free-vector/modern-abstract-background_1048-1003.jpg" width="100px"> 
</div>

Ответ 14

Центрировать изображение в div

/* standar */
div, .flexbox-div {
  position: relative;
  width: 100%;
  height: 100px;
  margin: 10px;
  background-color: grey;  
}

img {
  border: 3px solid red;
  width: 75px;
  height: 75px;
}
/* || standar */


/* transform */
.transform {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%); /* IE 9 */
  -webkit-transform: translate(-50%, -50%); /* Chrome, Safari, Opera */ 
}
/* || transform */


/* flexbox margin */
.flexbox-div {
  display: -webkit-flex;
  display: flex;
  background-color: lightgrey; 
}

.margin-img {
  margin: auto;
}
/* || flexbox margin */


/* flexbox justify align */
.flexbox-justify {
  justify-content: center;
}

.align-item {
  align-self: center;
}
/* || flexbox justify align */
<h4>Using transform </h4>  
<div>
  <img class="transform" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

<h4>Using flexbox margin</h4>  
<div class="flexbox-div">
  <img class="margin-img" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

<h4>Using flexbox justify align</h4>  
<div class="flexbox-div flexbox-justify">
  <img class="align-item" src="http://placeholders.org/250/000/fff" alt="Not By Design" border="1" />
</div>

Ответ 15

Я перепробовал несколько способов. Но этот способ прекрасно работает для меня

<img src="~/images/btn.png" class="img-responsive" id="hide" style="display: block; margin-left: auto; margin-right: auto;" />

Ответ 16

Если вам нужно сделать это inline (например, при использовании окна ввода),
вот быстрый хак, который сработал у меня: вокруг вашего (ссылка на изображение в этом случае)
в div с style="text-align:center"

<div style="text-align:center">

<a title="Example Image: Google Logo" href="https://www.google.com/" 
target="_blank" rel="noopener"><img src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" alt="Google Logo. Click to visit Google.com" border="0" data-recalc-dims="1" /></a>

<h6><strong>This text will also be centered </strong></h6>

</div> /* ends centering style */

Ответ 17

Чтобы ответить на вопрос просто, вы должны иметь обертку вокруг подэлемента.

Оболочка проинструктирует подэлемент границ для работы внутри.

  • положение: относительное;
    относительный Элемент расположен относительно своей обычной позиции, поэтому "left: 20px" добавляет 20 пикселей к элементу "LEFT"
  • дисплей: блок или inline-блок;
    блок Отображает элемент как элемент блока. Он начинается с новой строки и занимает всю ширину

    inline-block Отображает элемент как контейнерный блок встроенного уровня. Сам элемент отформатирован как встроенный элемент, но вы можете применить значения высоты и ширины
  • минимальная высота или минимальная ширина: (x) px;

Подэлемент внутри должен вести себя в соответствии с правилами, установленными оболочкой.

  • положение: абсолютное;
    absolute Элемент позиционируется относительно своего первого позиционированного (не статического) элемента-предка
  • дисплей: блок или inline-блок;
    блок Отображает элемент как элемент блока. Он начинается с новой строки и занимает всю ширину

    inline-block Отображает элемент как контейнерный блок встроенного уровня. Сам элемент отформатирован как встроенный элемент, но вы можете применить значения высоты и ширины
  • минимальная высота или минимальная ширина: (x) px;
  • наценка: авто; auto Браузер рассчитывает маржу
  • верх: 0; 0 Устанавливает положение верхнего края в пикселях, см и т.д.
  • низ: 0; 0 Устанавливает положение нижнего края в пикселях, см и т.д.
  • слева: 0; 0 Устанавливает положение левого края в пикселях, см и т.д.
  • справа: 0; 0 Устанавливает положение правого края в пикселях, см и т.д.

Инструкция top, bottom, left, right в позиции: абсолютная с полем auto, принимает вычисленную разницу всех ребер, и подэлемент ведет себя внутри элемента-обертки.

.Image-Container {
  position: relative;
  display: inline-block;
  width: 100%;
  height: 100%;
  min-height: 400px;
  background-image: -webkit-linear-gradient(left, #fd2853, #f55b17 20%, #fad500 40%, #3fe9d1 60%, #b93fe9);
  background-image: -moz-linear-gradient(left, #fd2853, #f55b17 20%, #fad500 40%, #3fe9d1 60%, #b93fe9);
  background-image: -o-linear-gradient(left, #fd2853, #f55b17 20%, #fad500 40% #3fe9d1 60%, #b93fe9);
  background-image: linear-gradient(to right, #fd2853, #f55b17 20%, #fad500 40%, #3fe9d1 60%, #b93fe9);
  border: 3px dashed #fff;
}

.Image-Container img {
  position: absolute;
  display: inline-block;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}
<div class='Image-Container'>
  <img src='http://www.freedigitalphotos.net/images/img/homepage/usa-travel-1-bottom-15226.jpg'>
</div>

Ответ 18

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">


      <style>
      body{
  /*-------------------important for fluid images---\/--*/
  overflow-x: hidden; /* some browsers shows it for mysterious reasons to me*/
  overflow-y: scroll;
  margin-left:0px;
  margin-top:0px;
  /*-------------------important for fluid images---/\--*/
      }
      .thirddiv{
      float:left;
      width:100vw;
      height:100vh;
      margin:0px;
      background:olive;
      }
      .thirdclassclassone{
      float:left;   /*important*/
      background:grey;
      width:80vw;
      height:80vh; /*match with img height bellow*/
      margin-left:10vw; /* 100vw minus "width"/2    */
      margin-right:10vw; /* 100vw minus "width"/2   */
      margin-top:10vh;
      }
      .thirdclassclassone img{
      position:relative; /*important*/
     display: block;  /*important*/
    margin-left: auto;  /*very important*/
    margin-right: auto;  /*very important*/
    height:80vh; /*match with parent div above*/

    /*--------------------------------
    margin-top:5vh;
    margin-bottom:5vh;
    ---------------------------------*/
    /*---------------------set margins to match total  height of parent di----------------------------------------*/
      }
    </style>           
</head>  
<body>
    <div class="thirddiv">
       <div class="thirdclassclassone">
       <img src="ireland.png">
    </div>      
</body>
</html>

Ответ 19

##Both Vertically and Horizontally center of the Page
.box{
    width: 300px;
    height: 300px;
    background-color: #232532;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
}