【发布时间】:2013-01-21 06:29:05
【问题描述】:
我正在使用 Oliver Boermans 的 jQuery 插件将图像放入具有 100% 宽度和高度的容器中(因此,本质上是视口); http://www.ollicle.com/eg/jquery/imagefit/
插件的核心是这个;
$(img)
.width('100%').each(function()
{
$(this).height(Math.round(
$(this).attr('startheight')*(dim.outerWidth/$(this).attr('startwidth')))
);
})
.css({marginTop: Math.round( ($(window).height() - $(img).height()) / 2 )});
startwidth 和 startheight 属性包含图像的实际像素尺寸。
现在,当图像比视口宽时,这绝对可以完美地工作。但是,我发现当视口垂直短于图像时,它不会将图像垂直适应视口。
如何修改此插件以在水平之外考虑垂直拟合,以便无论视口的尺寸和纵横比如何,图像的每一英寸总是完全显示?
我准备了一把小提琴来玩; http://jsfiddle.net/NXJCd/ - 调整 Result 分区的大小以查看插件的运行情况。如果您将高度设置为比拟合图像短,则图像的顶部和底部边缘会被剪切。
编辑:所以经过一番困惑,我想澄清一下;我想按比例 fit 容器内的图像。所有图像都需要始终可见,但不能大于其原始尺寸。我在下面形象化了它。我为此使用的 jQuery 插件适用于水平拟合(示例 A 和 C),但它不适合垂直拟合(示例 B)。这就是我要解决的问题。
EDIT2:经过进一步的混淆,我什至制作了一个动画来详细说明我希望它的行为方式; http://www.swfme.com/view/1064342
【问题讨论】:
-
我突然想到你很可能在做这样的事情:srobbin.com/jquery-plugins/backstretch
-
其实,没有。我想始终显示图像的每个像素。它与其说是背景,不如说是应该以最大分辨率显示的内容图像,如果视口太小而无法完全显示,请按比例将其缩小到适合的最大尺寸。
-
哦,所以您只希望图像按比例适合视口...
-
是的,但绝不会大于其原始比例。对于这一点,Oliver 的插件是完美的,除了当视口宽于高时它不会调整图像的高度。使用可视化查看更新的问题:)