Saya punya 2 metode untuk Anda.
Metode ini mengubah ukuran gambar hanya visual bukan dimensi sebenarnya di DOM, dan status visual setelah mengubah ukuran dipusatkan di tengah ukuran aslinya.
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');
}
Catatan dukungan browser : statistik browser menunjukkan inline incss.
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%;
}
Catatan: img.normal danimg.fakemerupakan gambar yang sama.
Catatan dukungan browser: Metode ini akan berfungsi di semua browser, karena semua browser mendukungcss properti yang digunakan dalam metode.
Cara kerjanya seperti ini:
#wrapdan #wrap img.fakemengalir
#wrapmemiliki overflow: hiddensehingga dimensinya identik dengan gambar bagian dalam ( img.fake)
img.fakeadalah satu-satunya elemen di dalam #wraptanpa absolutepemosisian sehingga tidak merusak langkah kedua
#img_wrapmemiliki absolutepemosisian di dalam #wrapdan memperluas ukurannya ke seluruh elemen ( #wrap)
- Hasil dari langkah keempat adalah yang
#img_wrapmemiliki dimensi yang sama dengan gambar.
- Dengan menetapkan
width: 50%pada img.normal, ukurannya 50%dari #img_wrap, dan oleh karena itu 50%dari ukuran gambar asli.
width: <number>%. Saya rasa tidak ada cara untuk melakukannya!