Изображение, не учитывающее размер его родителей

#html #css

#HTML #css

Вопрос:

Я использую flexslider и помещаю img в div, который отображается как встроенный блок. Таким образом, я могу содержать другие элементы (кнопку при наведении курсора мыши) внутри того же div и позиционировать их относительно этого. Он работает, как и ожидалось, в Chrome, но в Mozilla изображение, похоже, игнорирует любые ограничения по высоте или ширине, установленные для его родительских элементов, и отображается в полном размере. Вот быстрый codepen, который имитирует проблему.
http://codepen.io/spylefkaditis/pen/HysBi

Опять же, это отлично работает в Chrome, но не в Mozilla. Есть идеи?

HTML:

 <ul>
  <li>
    <div class="image">
      <img src="http://lorempixel.com/1200/1800/" alt="" />
<!--      <a href="#" class="btn">button</a>
      <div class="modal">
        <p class="message"></p>
      </div>-->
    </div>
  </li>
</ul>  
  

SCSS:

 *{
  box-sizing:border-box;
}
html,body{
  height:100%;
  width:100%;
}

ul{
  margin:0;
  padding: 0;
  width: 100%;
  height:100%;
  list-style-type:none;


  li{
    display:inline-block;
    position:relative;
    height:100%;
    width: 100%;
    text-align:center;

    .image{
      position:relative;
      display:inline-block;
      text-align:center;

      img{
        display: inline-block;
        max-height:100%;
        width:auto;
      }
/*      
      .btn{
        position:absolute;
        left:0;
        bottom:0;
        background-color:black;
      }
      */
    }
  }
}
  

Ответ №1:

Вам нужно установить значение высоты для .image элемента следующим образом:

 .image{
  position:relative;
  display:inline-block;
  text-align:center;
  height: inherit;
}
  

В противном случае div.image он увеличивает свою высоту, чтобы разместить содержимое, в данном случае большое изображение.

Смотрите демонстрацию по адресу: http://codepen.io/anon/pen/Hptco

Я протестировал это в Firefox и Chrome, и, похоже, все работает нормально.

Комментарии:

1. Спасибо за ваш ответ, Марк. Раньше я использовал высоту 100%, и это, казалось, решило проблему, ЗА ИСКЛЮЧЕНИЕМ того, что теперь по бокам элемента img есть дополнительный интервал. Вот скриншот того, что я имею в виду. postimg.org/image/bj2r9grpp

2. Я вижу проблему дополнительного пространства между img и .image , и я не уверен, откуда оно взялось. Однако я обнаружил, что, устанавливая ширину .image на что-то вроде небольшого 10px , это заставляет .image элемент сжиматься, и в результате изображение переполняется, и по бокам нет пробелов. Кроме того, поведение не полностью совпадает между Firefox и Chrome. Я также обнаружил, что при увеличении высоты окна размер изображения увеличивается, а пробелы в конечном итоге исчезают. На данный момент я больше ничего не могу сделать…

3. Спасибо за попытку помочь человеку. Я подумываю о том, чтобы просто добавить к нему JS и заставить его работать. Когда он сомневается в JS…