gpt4 book ai didi

javascript - 动画元素,但保持容器居中

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:33 25 4
gpt4 key购买 nike

我目前正在处理自定义灯箱脚本,需要一些帮助。我的图像大小调整动画效果很好,但我遇到了一个小问题。灯箱显示在用户屏幕的中间,但是一旦我设置了宽度和高度的动画,它就不会保留在屏幕的中央,而是使用 old 的左侧和顶部值(value)观。

这是灯箱本身的标记:

<div id="jqgal_container">
<div id="jqgal_nav_left" class="jqgal_nav">&lt;</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">&lt;</div>
<div id="jqgal_thumbs">
<div id="jqgal_thumbs_container">
<ul></ul>
</div>
</div>
<div id="jqgal_thumbnav_right" class="jqgal_thumbnav">&gt;</div>
</div>
</div>
<div id="jqapp_nav_right" class="jqgal_nav">&gt;</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() {


}
});
}

最佳答案

同时为 margin-left 和 margin-top 设置动画:

  "margin-left" : ($(window).width() - req_width) / 2 
"margin-top" : ($(window).height() - req_height) / 2

如果元素的 CSS 位置是 'absolute',将 margin-top/margin-left 更改为 top 和 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()
}}

哪个更容易阅读!

关于javascript - 动画元素,但保持容器居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com