HTML + Javascript: динамическое изменение размера изображения?
Я пытаюсь получить немного JavaScript
программно настроить HTML img
ширина тега для правильного отображения изображений разных размеров.
У меня фиксированная ширина img
пометить в 800px
чтобы отобразить изображение, это максимальная ширина.
Если изображение шире, то 800px
Я хочу показать это в 800px
широкий;
Если изображение меньше чем 800px
Я хочу сохранить ширину, чтобы не растягивать ее.
Я использую этот HTML / Javacript код, чтобы получить частичное решение:
function resize_image(id) {
var img = document.getElementById(id);
var normal_width = img.width;
img.removeAttribute("width");
var real_width = img.width;
if (real_width < normal_width) {
img.width = real_width;
} else {
img.width = normal_width;
}
}
<img id="myimage" onload="resize_image(self.id);" src="https://via.placeholder.com/350x150" width="800" />
Приведенный выше код работает во всех протестированных браузерах, кроме Safari
(изображения не отображаются, пока вы не обновите страницу).
Я знаю, что могу использовать CSS max-width
но это не будет работать на IE
< 7, который является выставочным стопором.
Как я могу заставить это работать для всех браузеров? Спасибо заранее.
4 ответа
Я никогда не видел сафари в работе, но вы можете попробовать изменить событие onload на это:
onload="resize_image(self.id);return true"
Возможно, что без возвращаемого значения safari считает, что этот объект не должен загружаться.
Используйте взлом IE6 css+javascript:
.dynamic_img {
width: expression(document.body.clientWidth <= 800? "auto" : "800px");
max-width: 800px; //For normal browsers
}
Без идентификатора:
...
function resize_image( img )
{
//var img = document.getElementById( id );
...
<img onload="resize_image(this);" src="IMAGE.JPG" width="800" />
Вы пробовали обезьяну с img.style.width
? Вы также можете попробовать иметь 2 класса CSS для каждого из двух условий и программно изменить их.