Bootstrap - как уменьшить масштаб изображения, чтобы оно соответствовало высоте окна?

Как сделать так, чтобы высота переполнения изображения реагировала?

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

введите здесь описание изображения

Поэтому я хочу, чтобы эти высоты реагировали - чтобы изображение уменьшалось, чтобы соответствовать высоте окна.

введите здесь описание изображения

Является ли это возможным?

CSS,

 html, body {
    height: 100%;
    margin: 0;
    padding: 0 0;
    border: 4px solid black;
}

.container-fluid {
    height: 100%;
    display: table;
    width: 100%;
    padding-right: 0;
    padding-left: 0;
    border: 4px solid blue;
}

.row-fluid {
    height: 100%;
    display: table-cell;
    vertical-align: middle;
    width: 100%;

    border: 4px solid red;
}

.centering {
    float: none;
    margin: 0 auto;
}

HTML,

<div class="container-fluid">
    <div class="row-fluid text-center">
        <div>
            <img src="images/xxx.jpg" class="img-responsive centering">
        </div>
    </div>
</div>

person laukok    schedule 10.02.2016    source источник
comment
Изображение большое и его высота превышает высоту окна.   -  person laukok    schedule 10.02.2016
comment
нет, не будет, как вы можете видеть на моем первом изображении.   -  person laukok    schedule 10.02.2016
comment
использовать 100vh в качестве изображений height.   -  person Farzad Yousefzadeh    schedule 10.02.2016
comment
с css3 можно использовать vh единиц... обозначает высоту окна просмотра. max-height:90vh;   -  person charlietfl    schedule 10.02.2016
comment
Вы пробовали класс .img-responsive?   -  person Derek Pollard    schedule 10.02.2016
comment
@OliverQueen да, я сделал. пожалуйста, посмотрите мой код.   -  person laukok    schedule 10.02.2016
comment
Ах. Мои извенения. Я на мобильном телефоне, и форматирование сомнительно, чтобы смотреть.   -  person Derek Pollard    schedule 10.02.2016
comment
Если возможно (?), Вы могли бы облегчить себе жизнь, поместив изображение в качестве фона по центру для container , тогда background-size: contains сделает эту работу за вас...   -  person JBA    schedule 10.02.2016
comment
Спасибо, ребята, за помощь. Мне просто нужно удалить class="img-responsive" из моего тега img. его не следует использовать...   -  person laukok    schedule 10.02.2016


Ответы (2)


Вы можете использовать height: 100% и vertical-align: top для img, а для элемента parent используйте height: 100vh

body, html {
  margin: 0;
  padding: 0;
}

div {
  display: inline-block;
  height: 100vh;
  width: 100%;
  text-align: center;
}

img {
  height: 100%;
  vertical-align: top;
}
<div>
  <img src="http://placehold.it/400x850">
</div>

person Nenad Vracar    schedule 10.02.2016
comment
Благодарю. это не работает на моем хроме по некоторым причинам! :( - person laukok; 10.02.2016
comment
@teelou, что ты имеешь в виду под it does not work :)? - person Nenad Vracar; 10.02.2016
comment
извините, я имею в виду, что это все еще выглядит так же, как и исходная проблема, с которой я столкнулся, когда я использую реальное изображение вместо <img src="http://placehold.it/400x850">. - person laukok; 10.02.2016
comment
если вы попытаетесь заменить это изображение-заполнитель настоящим большим изображением, вы понимаете, что я имею в виду... - person laukok; 10.02.2016
comment
Это должно работать, и в изображениях нет никакой разницы, возможно, оно конфликтует с каким-то другим вашим кодом CSS. Используйте другой класс вместо div и img - person Nenad Vracar; 10.02.2016
comment
о, на самом деле ошибка вызвана загрузкой img-responsive! <img src="images/xxx.jpg" class="img-responsive"> - person laukok; 10.02.2016
comment
Да, img-responsive здесь может быть проблема, это пример с включенным бутстрапом jsfiddle.net/2Lzo9vfc/459 - person Nenad Vracar; 10.02.2016
comment
Большое спасибо за помощь и использование «реального» изображения. - person laukok; 10.02.2016
comment
Да, загрузчик перезапишет этот стиль для img и сделает img height: auto, если вы используете класс img-responsive, поэтому вы должны удалить его, иначе вы можете использовать height: 100% !important;, что не является хорошим решением. - person Nenad Vracar; 10.02.2016

Замените класс .centering встроенным классом .center-block начальной загрузки.

Затем добавьте новый класс .myimg

.myimg {
  margin: 0 auto;
  position: absolute;
  height:100%;
  top:0;
  bottom:0;
}

Проверьте эту скрипту https://jsfiddle.net/wo2eysh8/3/

person Zacaria    schedule 10.02.2016
comment
Это изображение уходит снизу и запускает прокрутку, если вы делаете экран короче. Он хочет, чтобы изображение уменьшилось до нужного размера. - person Gone Coding; 10.02.2016
comment
Попробуйте с top: 0 и bottom: 0 - person Zacaria; 10.02.2016