有几种方法可以解决您的问题,我会放一个 TL;DR; 在这里回答,下面是我的 2cents。
方法一:
HTML
<div class="wrapper">
<div class="img_wrapper">
<a href=""><img src="image.jpg" class="visible_img"/></a>
</div>
<img src="image.jpg" class="invisible_img"/>
</div>
(两张图片使用相同的img src)
CSS
.wrapper{
position: relative;
float: left;
overflow: hidden;
}
.img_wrapper{
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
img.invisible_img{
visibility: hidden;
}
img.visible_img{
width: 50%;
height: 50%;
}
方法2使用CSS scale():简单地给你原来的img一个类:
HTML
<img src="image.jpg" class="resized_img"/>
CSS
.resized_img{
-webkit-transform: scale(0.75);
-moz-transform: scale(0.75);
-ms-transform: scale(0.75);
-o-transform: scale(0.75);
transform: scale(0.75);
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
}
不过,对于我提供的两种方法,容器(li)仍将占据整个图像的宽度和高度。
关于您的问题的一些想法:
使用图像容器的宽度和高度计算百分比宽度和高度。在您的示例链接中,图像的容器(li)的宽度为 600px,并且没有给出高度值。在 PC 浏览器上,您的width="75%" height="75%"呈现为 width = 600px 的 75%(即 450px),height = 未定义值的 75%(浏览器将其理解为 height: auto; )。请注意,您的图片为 1440x900,因此 450 像素不是图片原始宽度的 75%。
在您特定的移动浏览器(ipad)上,它不像 PC 浏览器那样灵活,并且将您的高度 = 75% 理解为它的容器可以达到的某个最大可能高度的 75%(这是一个巨大的高度)。这就是为什么你的图像是倾斜的。
通常,我们鼓励您根据屏幕尺寸(以及容器的尺寸)显示图像,而不是作为其原始尺寸的一部分。由于每个用户的屏幕不同,对于某些用户,您的图像可能会显得太小或太大。
另一个问题是图像的大小。您的图像在客户端调整大小,这意味着服务器仍在将完整图像发送给用户。如果用户没有单击图像以查看完整尺寸,那么您浪费的带宽比提供缩略图所需的带宽多约 2 倍。如果你制作一个包含 20 张图片的图片库,而用户只查看一张,那么浪费的带宽将增加 19 倍。通常,图像缩略图和完整图像应该是 2 个不同大小的不同文件,仅在需要时由服务器提供。(如果您使用这种方法,您也将能够以干净有效的方式解决您的问题)。