Eu tenho 2 métodos para você.
Este método redimensiona a imagem apenas visual, não nas dimensões reais no DOM, e o estado visual após o redimensionamento centralizado no meio do tamanho original.
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');
}
Navegador suporte nota: estatísticas navegadores mostrou inlinecss
.
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%;
}
Nota: img.normal
eimg.fake
é a mesma imagem.
Nota de suporte de navegador: este método funcionará em todos os navegadores, porque todos os navegadores suportamcss
propriedades usadas no método.
O método funciona desta maneira:
#wrap
e #wrap img.fake
tem fluxo
#wrap
tem de overflow: hidden
modo que suas dimensões sejam idênticas à imagem interna ( img.fake
)
img.fake
é o único elemento interno #wrap
sem absolute
posicionamento para não quebrar a segunda etapa
#img_wrap
tem absolute
posicionamento interno #wrap
e se estende em tamanho para todo o elemento ( #wrap
)
- O resultado da quarta etapa é que
#img_wrap
tem as mesmas dimensões da imagem.
- Ao definir
width: 50%
em img.normal
, seu tamanho é 50%
de #img_wrap
, e, portanto, 50%
do tamanho da imagem original.
width: <number>%
. Eu não acho que haja uma maneira de fazer isso!