2017-02-11 6 views
6

Я пытаюсь использовать flexbox для размещения двух изображений в столбце. В этом случае ширина контейнера div меньше ширины изображения. Контейнер div идеально подходит для изображения в Chrome, но он не в IE, и я не знаю, почему.IE 11: изображение не масштабируется правильно в flexbox

div.outer { 
 
    width: 400px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-around; 
 
} 
 

 
div.inner { 
 
    width: 100%; 
 
    border: 1px solid red; 
 
} 
 

 
img { 
 
    width: 100%; 
 
    height: auto; 
 
}
<div class="outer"> 
 
    <div class="inner"> 
 
    <img src="http://placehold.it/480x360"> 
 
    </div> 
 

 
    <div class="inner"> 
 
    <img src="http://placehold.it/480x360"> 
 
    </div> 
 
</div>

https://jsfiddle.net/Yifei/16cpckqk/

Это то, что я получил в IE 11:

+0

Я не могу это объяснить, но вы всегда можете установить высоту 100% на изображение и вручную определить высоту flexbox, если это помогает :) –

+2

По какой-то причине это также устраняется установкой 'flex: 0 0 auto' на' div.inner' (или просто 'flex-shrink: 0'). Что странно, потому что для того, чтобы позволить купе сжать, вы заявляете, что он не должен сокращаться. – GSerg

ответ

11

IE11, кажется, есть некоторые проблемы с начальным значением flex-shrink property. Если вы установите его в ноль (он изначально установлен в 1), он должен работать:

div.outer { 
 
    width: 400px; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: space-around; 
 
} 
 
div.inner { 
 
    flex-shrink: 0; 
 
    width: 100%; 
 
    border: 1px solid red; 
 
} 
 
img { 
 
    width: 100%; 
 
    height: auto; 
 
}
<div class="outer"> 
 
    <div class="inner"> 
 
    <img src="http://placehold.it/480x360"> 
 
    </div> 
 

 
    <div class="inner"> 
 
    <img src="http://placehold.it/480x360"> 
 
    </div> 
 
</div>

+0

Вы делаете это звучащим как установка 'flex-shrink: 0;' является правильным способом обеспечения правильного начального значения. Но логически правильное значение здесь * является * '1, как я [упоминал] (http://stackoverflow.com/questions/42173213/ie-11-image-doesnt-scale-down-correctly-within-flexbox#comment71511073_42173213) , несмотря на то, что '0' происходит, чтобы исправить это. – GSerg

+0

Я не сказал, что это правильный путь, мой ответ - возможный обход проблемы. Я не видел вашего комментария, когда отвечал ... sry – andreas

 Смежные вопросы

  • Нет связанных вопросов^_^