Как динамически изменять размер изображения с помощью CSS при изменении ширины/высоты браузера?
Интересно, как я мог бы изменить размер изображения вместе с окном браузера, здесь - это то, что я сделал до сих пор (или скачать весь сайт в ZIP).
Это хорошо работает в Firefox, но у него есть проблемы в Chrome: изображение не всегда изменяется в размерах, оно как-то зависит от размера окна при загрузке страницы.
Это также хорошо работает в Safari, но иногда изображение загружается с минимальной шириной/высотой. Возможно, это связано с размером изображения, я не уверен. (Если он загружается нормально, попробуйте обновить несколько раз, чтобы увидеть ошибку.)
Любые идеи о том, как я могу сделать это более пуленепробиваемым? (Если мне понадобится JavaScript, я тоже смогу жить с этим, но CSS предпочтительнее.)
Ответы
Ответ 1
Этот может выполняться с помощью чистого CSS и даже не требует медиа-запросов.
Чтобы сделать изображения гибкими, просто добавьте max-width:100%
и height:auto
. Изображение max-width:100%
и height:auto
работает в IE7, но не в IE8 (да, другая странная ошибка IE). Чтобы исправить это, вам нужно добавить width:auto\9
для IE8.
источник: http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries
CSS:
img {
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
И если вы хотите применить фиксированную максимальную ширину изображения, просто поместите его в контейнер, например:
<div style="max-width:500px;">
<img src="..." />
</div>
Пример JSFiddle здесь. Нет необходимости в JavaScript. Работает в последних версиях Chrome, Firefox и IE (это все, что я тестировал).
Ответ 2
window.onresize = function(){
var img = document.getElementById('fullsize');
img.style.width = "100%";
};
В IE onresize
событие запускается при каждом изменении пикселя (ширина или высота), поэтому может возникнуть проблема с производительностью. Уменьшите размер изображения за несколько миллисекунд, используя javascript window.setTimeout().
http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html
Ответ 3
Задайте для свойства resize значение. Затем вы можете изменить ширину и высоту следующим образом:
.classname img{
resize: both;
width:50px;
height:25px;
}
Ответ 4
Используете ли вы jQuery?
Потому что я быстро выполнил поиск в jQuery-плагинах, и у них, похоже, есть плагин для этого, проверьте это, нужно работать:
http://plugins.jquery.com/project/jquery-afterresize
EDIT:
Это решение для CSS, я просто добавляю style = "width: 100%" и работает для меня, по крайней мере, в хром и Safari. У меня нет т.е. Так что просто проверьте там и дайте мне знать, вот код:
<div id="gallery" style="width: 100%">
<img src="images/fullsize.jpg" alt="" id="fullsize" />
<a href="#" id="prev">prev</a>
<a href="#" id="next">next</a>
</div>
Ответ 5
Вы можете использовать свойство CSS3 scale
для изменения размера изображения с помощью css:
.image:hover {
-webkit-transform:scale(1.2);
transform:scale(1.2);
}
.image {
-webkit-transition: all 0.7s ease;
transition: all 0.7s ease;
}
Дополнительная литература:
Ответ 6
Вначале я использовал следующий html/css:
img {
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
<div>
<img src="..." />
</div>
Затем я добавил class="img"
в <div>
следующим образом:
<div class="img">
<img src="..." />
</div>
И все стало нормально работать.