ฉันมี 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>%
มันจะใช้เวลาถึงร้อยละขององค์ประกอบที่มีถ้าคุณจะใช้ ฉันไม่คิดว่าจะมีทางทำได้!