【问题标题】:Fit images (both landscape and portrait) into square thumbnail使图像(横向和纵向)适合方形缩略图
【发布时间】:2012-08-27 15:55:46
【问题描述】:

我真的很难让横向和纵向的图像很好地适合画廊的方形缩略图。

我尝试了各种 CSS 技巧,但认为我可能需要使用 Javascript。

有人知道我该如何解决这个问题吗?

编辑 - HTML/CSS 可以是任何东西,目前它只是打印出带有拇指方形类的图像,即。

<img class="thumb_square" src="/images/uploads/pic.jpg"/>
<img class="thumb_square" src="/images/uploads/pic2.jpg"/>
<img class="thumb_square" src="/images/uploads/pic3.jpg"/>

【问题讨论】:

  • 张贴你的缩略图和所有的html
  • 我写了一个网络照片库,发现最简单的方法是将缩略图尺寸存储在数据库中,并根据这些尺寸设置 的左边距和上边距。但是你没有提供太多关于你的实现的信息,所以很难更具体。
  • 如果您希望形状不匹配的图像始终准确地填充到您的缩略图中,您有两种选择:1)您可以缩放/拉伸/挤压它以适应或 2)您可以按比例缩放而不失真并夹住不太合适的较长边缘。你要哪个?
  • 理想情况下,想在不变形的情况下缩放它,我不会担心裁剪图像的一部分。

标签: jquery html css image


【解决方案1】:

一种可能的解决方案(已测试):在div 中显示每个缩略图。使用 css background 属性显示缩略图,center 使用 no-repeat。您必须指定包含div 的width 和height。将宽度和高度设置为所有缩略图的最大宽度/高度。 IE。如果您的缩略图是 150px*200px 和 200px*150px,请将所有 div 设置为 200px*200px。然后缩略图将在 200px*200px 框内居中,无论它们是处于纵向还是横向“模式”。

例子:

<div style="width:200px; height:200px;
   background: url('/images/uploads/pic.jpg') no-repeat center;
   border:1px solid red;">
</div>

<div style="width:200px; height:200px;
   background: url('/images/uploads/pic2.jpg') no-repeat center;
   border:1px solid red;">
</div>

<div style="width:200px; height:200px;
   background: url('/images/uploads/pic3.jpg') no-repeat center;
   border:1px solid red;">
</div>

【讨论】:

  • 谢谢,这行得通,但由于图像大约 600 像素宽,它只显示了其中很小的一部分,有没有办法调整背景图像的大小?
  • @CarlBembridge 在将图像用作缩略图之前,您应该使用照片编辑器(Photoshop、ImageMagick 或类似工具)将图像大小调整为缩略图大小(可能为 100-300 像素)。否则,加载所有这些大图像的页面需要时间......
  • 他们希望保持图像的高分辨率,以用于 ipad/macbook pro 等高 DPI 显示器。这是我没有在上传时调整大小的主要原因。所以我认为如果我们在上传时调整图像大小,这种方法会很完美,我认为要使图像可点击,我需要在其中粘贴一个透明的 png 或其他东西作为完整图像的链接,但这似乎是最好的方法让他们得到正确的比例。非常感谢:-)
【解决方案2】:

我认为这正是您所需要的: 无论图像有多大,您都会看到整个高度(如果是横向)或宽度(如果是纵向);

jFiddle:http://jsfiddle.net/ECRc4/3/

HTML:

<div class="thumb" style="background-image: url('http://placehold.it/250x500')"></div>
<br/>
<div class="thumb" style="background-image: url('http://placehold.it/500x200')"></div>
<br/>
<div class="thumb" style="background-image: url('http://placehold.it/100x200')"></div>

CSS:

.thumb{
    display:inline-block;
    width:100px;
    height:100px;
    background:center;
    background-size:cover;
}

【讨论】:

  • 感谢您的回复 Nahn,这是一个很好的解决方案。因为旧版浏览器不支持 Background-size:Cover(并且此客户端使用的是旧版 Internet Explorer),所以它不太适合这个问题。但是,这是一种很好的技术,可以继续使用 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2011-09-27
相关资源
最近更新 更多