我目前正在制作自定义灯箱脚本,需要一些帮助。我有动画调整大小的图像工作很好,但我遇到了一个小问题。灯箱显示在用户屏幕的中间,但是一旦我设置了宽度和高度的动画,它就不会保留在屏幕的中央,只使用旧< / strong>左侧和顶部值。
这里是灯箱本身的标记:
<div id="jqgal_container">
<div id="jqgal_nav_left" class="jqgal_nav"><</div>
<div id="jqgal_main">
<div id="jqgal_main_img"></div>
<div id="jqgal_footer">
<div id="jqgal_main_caption"><p></p></div>
<div id="jqgal_thumbnav_left" class="jqgal_thumbnav"><</div>
<div id="jqgal_thumbs">
<div id="jqgal_thumbs_container">
<ul></ul>
</div>
</div>
<div id="jqgal_thumbnav_right" class="jqgal_thumbnav">></div>
</div>
</div>
<div id="jqapp_nav_right" class="jqgal_nav">></div>
</div>
要显示的图像作为#jqgal_main_img
元素存储在<img />
中。我为#jqgal_main_img
的宽度和高度设置了动画,但我也希望将整个容器(#jqgal_container
)保持在屏幕中心。
我的问题是,我如何设置子元素的宽度动画,但仍然分别为容器的顶部和左侧位置设置动画,因此它似乎从中心扩展和增长?
此时为图像容器的宽度和高度设置动画的代码如下所示:
_resizeToFit : function(img_width, img_height, compFunc)
{
// Calculate the width and height needed:
var req_width = img_width;
var req_height = img_height;
this._elements.mainimg.animate({ width: req_width }, {
duration: 'fast',
complete: function() {
$.jqgal._elements.footer.width(req_width);
$.jqgal._elements.mainimg.animate({ height: req_height }, 'fast', function() {
if(compFunc != undefined) { compFunc.call(this); }
});
},
step : function() {
}
});
}
答案 0 :(得分:1)
同样为margin-left和margin-top设置动画:
"margin-left" : ($(window).width() - req_width) / 2
"margin-top" : ($(window).height() - req_height) / 2
如果元素CSS位置为'绝对',则将margin-top / margin-left更改为左上角。
编辑:
在整个'animate'字符串的末尾添加
.parent().animate({
"margin-left" : )($(window).width() - req_width) / 2) + this._elements.mainimg.parent().scrollLeft(),
"margin-top" : (($(window).height() - req_height) / 2 ) + this._elements.mainimg.parent().scrollTop()
}}
或者在回调函数中:
$(this).parent().animate({...});
为方便起见,最好设置包含元素的变量......
$this = this._elements.mainimg;
$parent = $this.parent();
然后父animate()数据将如下所示:
"margin-left" : )($(window).width() - req_width) / 2) + $parent.scrollLeft(),
"margin-top" : (($(window).height() - req_height) / 2 ) + $parent.scrollTop()
}}
哪个更容易阅读!
答案 1 :(得分:-1)
我认为你应该设置边距和左边距离的动画。