【发布时间】:2012-01-21 22:20:51
【问题描述】:
请看下面的小提琴:
[编辑:更新小提琴 => http://jsfiddle.net/NYZf8/5/]
http://jsfiddle.net/NYZf8/1/(以不同的屏幕尺寸查看,以便理想情况下图像适合 %-width 布局的 div)
图像应该从动画完成后正确出现的位置开始动画。
我不明白为什么第一次调用setMargin() 会设置负边距,即使容器 div 和 img 的记录高度是相同的,在 jqueryui show() 调用之后将图像设置在我想要的位置(从头开始)。我的猜测是,图像高度毕竟是 0/未定义,即使它记录得很好:?
js:
console.log('img: ' + $('img').height());
console.log('div: ' + $('div').height());
$('img').show('blind', 1500, setMargin);
function setMargin() {
var marginTop =
( $('img').closest('div').height() - $('img').height() ) / 2;
console.log('marginTop: ' + marginTop);
$('img').css('marginTop', marginTop + 'px');
}
setMargin();
【问题讨论】:
-
您是否在 HTML 中定义了 img 的高度?也许 JS 在图像完全加载之前触发,所以浏览器抓取了错误的高度。
-
我正在对图像使用百分比调整大小 - 不确定这是否适用于在 img 标签中设置高度和宽度。所以,不,我没有,但我可以试一试。
-
@kontour 这会触发您的动画,但仍然不太正确:jsfiddle.net/NYZf8/2
-
另外,不需要在 css 值中添加 'px'。 jquery 添加它。
-
您可能想尝试在 img 上强制 load(),然后对回调进行设置。在这里查看第一个答案stackoverflow.com/questions/3877027/…
标签: javascript jquery css jquery-ui