У меня для вас есть 2 метода.
Этот метод изменяет размер изображения только визуально, а не его фактические размеры в DOM, а визуальное состояние после изменения размера центрируется в середине исходного размера.
html:
<img class="fake" src="example.png" />
css:
img {
-webkit-transform: scale(0.5); /* Saf3.1+, Chrome */
-moz-transform: scale(0.5); /* FF3.5+ */
-ms-transform: scale(0.5); /* IE9 */
-o-transform: scale(0.5); /* Opera 10.5+ */
transform: scale(0.5);
/* IE6–IE9 */
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');
}
Примечание о поддержке браузера : статистика браузеров отображается в форматеcss
.
html:
<div id="wrap">
<img class="fake" src="example.png" />
<div id="img_wrap">
<img class="normal" src="example.png" />
</div>
</div>
css:
#wrap {
overflow: hidden;
position: relative;
float: left;
}
#wrap img.fake {
float: left;
visibility: hidden;
width: auto;
}
#img_wrap {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#img_wrap img.normal {
width: 50%;
}
Примечание: img.normal
иimg.fake
это то же изображение.
Примечание о поддержке браузера: этот метод будет работать во всех браузерах, поскольку все браузеры поддерживаютcss
свойства, используемые в методе.
Метод работает так:
#wrap
и #wrap img.fake
есть поток
#wrap
имеет overflow: hidden
так, что его размеры идентичны внутреннему изображению ( img.fake
)
img.fake
единственный элемент внутри #wrap
без absolute
позиционирования, чтобы он не нарушал второй шаг
#img_wrap
имеет absolute
позиционирование внутри #wrap
и распространяется по размеру на весь элемент ( #wrap
)
- Результат четвертого шага - тот
#img_wrap
же размер, что и изображение.
- Установив
width: 50%
на img.normal
ее размер 50%
из #img_wrap
, и , следовательно , 50%
от размера исходного изображения.
width: <number>%
. Я не думаю, что есть способ сделать это!