Я не думаю, что CSS может это сделать.
С jQuery это тривиально.Вам даже не нужны атрибуты ширины и высоты в HTML, хотя обычно хорошо иметь их.
$("img").each(function(){
var real_width = $(this).width();
var real_height = $(this).height();
var max_width = $(this).css("max-width"); // Or just say 200
if (real_width > max_width) {
var ratio = real_width / real_height;
$(this).width(max_width);
$(this).height(max_width / ratio);
}
});
Я не тестировал этот код, поэтому могут быть незначительные ошибки, но общая идеяесть.
Редактировать: В некоторых браузерах, $(document).ready()
будет срабатывать до загрузки всех изображений.Если у вас есть изображение без явных атрибутов ширины и высоты, это может быть проблемой, поскольку $(this).width()
вернет 0. В этом случае просто убедитесь, что все изображения имеют атрибуты ширины и высоты, или вместо этого присоедините этот код к $("img").load()
.