Senin için 2 yöntemim var.
Bu yöntem, görüntüyü yalnızca görsel değil, DOM'daki gerçek boyutları ve orijinal boyutun ortasında ortalanmış olarak yeniden boyutlandırıldıktan sonra görsel durumu yeniden boyutlandırır.
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');
}
Tarayıcı desteği notu: tarayıcı istatistiklericss
,.
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%;
}
Not: img.normal
veimg.fake
aynı görüntüdür.
Tarayıcı desteği notu: Bu yöntem tüm tarayıcılarda çalışacaktır çünkü tüm tarayıcılarcss
yöntemde kullanılan özellikleridesteklemektedir.
Yöntem şu şekilde çalışır:
#wrap
ve #wrap img.fake
akış var
#wrap
yer alır overflow: hidden
(boyutları, iç görüntüye denk olduğu bir şekilde img.fake
)
img.fake
tek unsur içinde olduğu #wrap
olmadan absolute
ikinci adımı kırılmaz böylece konumlandırma
#img_wrap
içinde absolute
konumlandırılmıştır #wrap
ve boyut olarak tüm öğeye ( #wrap
) kadar uzanır
- Dördüncü adımın sonucu
#img_wrap
, görüntü ile aynı boyutlara sahip olmasıdır.
- Ayarlayarak
width: 50%
üzerine img.normal
, onun boyutudur 50%
arasında #img_wrap
ve bu nedenle 50%
orijinal görüntü boyutu.
width: <number>%
. Bunu yapmanın bir yolu olduğunu sanmıyorum!