我有一个网站要显示一堆不同的图像,所有不同的分辨率和纵横比。CSS中是否有一种简单的方法可以将图像调整大小和裁剪到特定分辨率?出于我的目的,我希望调整后的图像为 280x280。
当然我可以设置<img height = '280' width = '280' />
,但这会拉伸它。我想要两个分辨率中较小的一个,做一个正方形,然后取中心像素。例如,如果分辨率是 480x200,我希望它从图像中心取出一个 200x200 的部分。
我试过谷歌搜索,但无济于事。
我有一个网站要显示一堆不同的图像,所有不同的分辨率和纵横比。CSS中是否有一种简单的方法可以将图像调整大小和裁剪到特定分辨率?出于我的目的,我希望调整后的图像为 280x280。
当然我可以设置<img height = '280' width = '280' />
,但这会拉伸它。我想要两个分辨率中较小的一个,做一个正方形,然后取中心像素。例如,如果分辨率是 480x200,我希望它从图像中心取出一个 200x200 的部分。
我试过谷歌搜索,但无济于事。
不可能使用 css 对图像进行“真正的裁剪”。真正的裁剪意味着图像被缩小到新的值,并且它的大小比以前更小。
但是有一个负边距或绝对定位的解决方案,对您有很大帮助。我已经多次使用过这种技术。
请看: 使用 CSS 裁剪图像
您可以使用 clip 属性,用于裁剪元素。
几周前,我在 Codrops 上写了一篇关于它的教程:http: //tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/。
如果将图像设置为 CSS 背景,则可以使用background-size: cover|contain。
实际上,我最近遇到了同样的问题,最终对背景图像的方式略有不同。另一个主要区别是我的方式不假设知道图像的宽度和高度 - 所以它可以动态地处理任何图像。虽然它确实需要一点点 jQuery 来确定图像的方向(我相信你可以使用纯 JS 代替)。
如果您对更多解释感兴趣,我写了一篇关于它的博客文章,但代码非常简单:
HTML:
<ul class="cropped-images">
<li><img src="http://fredparke.com/sites/default/files/cat-portrait.jpg" /></li>
<li><img src="http://fredparke.com/sites/default/files/cat-landscape.jpg" /></li>
</ul>
CSS:
li {
width: 150px; // Or whatever you want.
height: 150px; // Or whatever you want.
overflow: hidden;
margin: 10px;
display: inline-block;
vertical-align: top;
}
li img {
max-width: 100%;
height: auto;
width: auto;
}
li img.landscape {
max-width: none;
max-height: 100%;
}
jQuery:
$( document ).ready(function() {
$('.cropped-images img').each(function() {
if ($(this).width() > $(this).height()) {
$(this).addClass('landscape');
}
});
});
您可以使用 CSS 设置网站上所有图像的大小:
img {
width: 280px;
height: 280px;
}
问题是,一些图像会因为它们的纵横比而看起来很奇怪。最好的办法是在上传时为每张图片创建不同大小的(更广为人知的称为缩略图)。不是在运行时,那将需要很长时间。