2014-01-13 2 views
0

Благодаря решению James Montagne's я построил однострочную галерею, которая масштабирует изображения в specific behaviour, используя CSS.Динамическое масштабирование изображений по высоте с использованием чистого CSS в Chrome 27 и выше

Отлично работает - кроме Chrome 27 и выше. Здесь ширина изображений остается на начальном значении, пока высота шкалы правильно.

Пожалуйста, проверьте this Fiddle или код ниже:

HTML:

<div> 
    <img src="http://placekitten.com/200/300" class="vert"/> 
    <img src="http://placekitten.com/500/200" class="horiz"/> 
    <img src="http://placekitten.com/200/300" class="vert"/> 
    <img src="http://placekitten.com/400/300" class="horiz"/> 
    <img src="http://placekitten.com/200/300" class="vert"/> 
</div> 

CSS:

body,html{ 
    height: 100%; 
} 

div{ 
    white-space: nowrap; 
    height: 100%; 
} 

img{ 
    min-height: 200px; 
    height: 100%; 
    vertical-align: top; 
} 

.horiz{ 
    max-height: 300px; 
} 

.vert{ 
    max-height: 500px; 
} 

Я уже вырыл через Chrome 27 changelog (~ 13MB), но ничего не нашел полезная информация по этому вопросу.

Любые идеи о том, как избежать размытия изображений при изменении размера окна в Chrome> = 27?

+0

Возможный дубликат http://stackoverflow.com/questions/14718050/chrome-does-not-re-calculate-width-when-height-changes –

+0

Спасибо, что указали на это сообщение, @Eisa! Но это не единственное решение для CSS. Нижняя строка: принудительно перерисовать JS. Я буду иметь это в виду, хотя мне не нравится идея прикрепить перерисовку к событию изменения размера окна. – Thorsten

ответ

0

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

В этом случае, если вы больше озабочены шириной изображений, вы можете избавиться от min-height и сделать что-то вроде этого:

body,html{ 
    height: 100%; 
} 

div{ 
    height: 100%; 
    width: 100%; 
    padding: 0; 
} 

img{ 
    float: left; 
    height: auto; 
    vertical-align: top; 
    width: 19%; 
    margin: 0.5%; 
} 

См примера here.

Поскольку я знаю, что у вас есть ряд из 5 изображений, мы можем использовать ширину 19% ширины div и хорошо вписывать их.

EDIT

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

Этот пример here.

+0

Спасибо за ваши предложения @ scdavis41! Но это не то, что я ищу. Мне нужно такое же масштабирующее поведение, как показано в [моей опубликованной скрипке] (http://jsfiddle.net/Rgp6h/0/). Этот код работает в новейших версиях других популярных браузеров, поэтому я предполагаю, что для внесения этого кода в более новые версии Chrome требуется лишь небольшая модификация. – Thorsten