2010-07-15 3 views
3

Мне нужно отобразить кучу изображений на странице. Изображения имеют разный размер, некоторые очень широкие и очень тонкие. Я хочу положить их в контейнер с фиксированной шириной и фиксированной высотой.Масштабирование изображений в HTML

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

Наш контейнер 500x500 и изображение скажем 1000x400, тогда оно будет масштабироваться как 500x200. Аналогично, если изображение 400x1000, тогда масштабированное изображение составляет 200x500. Это можно сделать только с помощью html/css. Любая помощь приветствуется. Благодарю.

+1

Возможно, я очень ошибаюсь, в основном из-за того, что на самом деле этого не делал, но разве не прокси-ролики img-тега не занимают этого? – KdgDev

+0

@WebDevHobo ширина и высота делают масштаб изображения, но не сохраняют соотношение сторон – mikek3332002

ответ

4

Вы можете использовать max-width и max-height свойства CSS, чтобы получить эффект, который вы хотите:

#container img { 
    max-width:500px; 
    max-height:500px: 
} 

Имейте в виду, что это не работает в IE6. Чтобы заставить его работать, вам может понадобиться либо масштабировать сервер изображений, либо использовать выражения, которые неприятны. Существуют и другие способы обхода, которые вы можете найти в google :)

+0

Хорошее обходное решение. Что происходит в IE6, оно просто отображает его при нормальной ширине и высоте? –

+0

IE6 просто игнорирует свойства css, которые он не понимает. Вам удалось найти приемлемый обходной путь? –

+0

+1 Это решение сохраняет соотношение сторон даже по оси Y или по оси x больше 500 пикселей. – JohnB

3

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

+0

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

+0

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

1

№ Это не полностью выполнимо с htm и css.

img{ width: 100% } 

будет отображать изображение 1000x400 как 500x200 бу 400x1000, будет отображаться как 500x1200.

Вы можете использовать javascrpt как:

function scaleimage(id) 
{ 
    var image = document.getElementById(id); 
    if(image.offsetWidth > image.offsetHeight) 
    { 
     if(image.offsetWidth > 500) 
     { 
      image.offsetHeight = image.offsetHeight * 500/image.offsetWidth; 
      image.offsetWidth = 500; 
     } 
    } 
    else 
    { 
     if(image.offsetHeight > 500) 
     { 
      image.offsetWidth = image.offsetWidth * 500/image.offsetHeiht; 
      image.offsetHeight = 500; 
      } 
    } 
} 

Извините за плохое форматирование, кажется, что мой iPhone не поддерживает его.

+0

даст ему шанс ... прямо сейчас я катаюсь с максимальной шириной и максимальной высотой. –

0

Лучший способ сделать это на сервере. Или вручную перед загрузкой (если это возможно).

-1

Вы можете использовать ширину и высоту CSS свойства, чтобы получить эффект, который вы хотите:

контейнер IMG {

width:500px; 
height:500px: 

}

Имейте в виду, что эта работа во всех браузерах.

Thanks Ptiwari.

+0

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