jQuery:动画宽度/高度,但保持居中

发布于 2024-10-20 10:05:41 字数 386 浏览 1 评论 0原文

我在页面上有一个元素,我已经水平和垂直居中(它是一个 jQuery UI 模态对话框),并且想要使用 .animate() 调整它的大小,如下所示:

<div id="element" style="width: 100px; height: 100px;">
    Hi Stack Overflow!
</div>

<script type="text/javascript">
    $('#element').animate({ height: "200px" });
</script>

效果很好,除了该元素仅向下增长。我想做的是让元素在两个方向上垂直增长(在本例中每个方向增长 50px),以便它保持居中。有办法可以做到吗?

I have an element on the page that I've already centered horizontally and vertically (It's a jQuery UI Modal Dialog), and want to resize it using .animate() like this:

<div id="element" style="width: 100px; height: 100px;">
    Hi Stack Overflow!
</div>

<script type="text/javascript">
    $('#element').animate({ height: "200px" });
</script>

That works fine, except the element only grows downwards. What I'm trying to do is have the element grow vertically in both directions (in this case 50px in each direction) so it stays centered. Is there a way that it can be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风柔一江水 2024-10-27 10:05:41

现场演示

var growEl = $("#grow"),
    curHeight = $("#grow").height(),
    curTop = growEl.offset().top,
    newHeight = 200,
    newMargin = curTop -(newHeight -curHeight)/2;

if(newMargin < 0){
 newMargin = 0;   
}

$("#grow").animate({height:newHeight+"px", marginTop:newMargin + 'px'});

计算公式确定如何制作边距

NewTopMargin = CurrentMargin-(NewHeight-OldHeight)/2

感谢@bobsoap 提醒我使用 offset.top

Live Demo

var growEl = $("#grow"),
    curHeight = $("#grow").height(),
    curTop = growEl.offset().top,
    newHeight = 200,
    newMargin = curTop -(newHeight -curHeight)/2;

if(newMargin < 0){
 newMargin = 0;   
}

$("#grow").animate({height:newHeight+"px", marginTop:newMargin + 'px'});

Formula for figuring out what to make the margin

NewTopMargin = CurrentMargin-(NewHeight-OldHeight)/2

Thanks @bobsoap for reminding me to use offset.top

我的奇迹 2024-10-27 10:05:41
margin-top: -50px, height: 50px;

类似的事情(抱歉它没有格式化代码)我确信你可以正确插入它。

margin-top: -50px, height: 50px;

That sort of thing (sorry its not code formatted) i'm sure you can insert it correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文