具有绝对父级的 div 的 jQuery 动画宽度

Posted

技术标签:

【中文标题】具有绝对父级的 div 的 jQuery 动画宽度【英文标题】:jQuery animating width of a div with an absolute parent 【发布时间】:2011-08-04 13:39:13 【问题描述】:

我正在尝试为div 的宽度设置动画,该宽度由位于absolute 的父元素包裹到它自己的父元素。显示example of what I mean 可能更容易解释。

应该发生的是,当单击红色矩形时,绿色框的宽度会动画到某个宽度,而红色矩形位于它旁边。这一切在 IE 和 Firefox 中运行良好,但在 chrome 中运行时,红色矩形跳到绿色框下方。所以我只是想知道我是否做了一些愚蠢的事情,或者是否有人知道我可能做错了什么?

谢谢,

【问题讨论】:

给父母一个足够大的宽度以适应动画似乎可以解决它,你试过了吗? 【参考方案1】:

没有错,只是浏览器认为没有足够的可用空间让两个元素并排显示:)

#banner-wrapper 
    min-width: 100%;

小提琴链接:http://jsfiddle.net/K2UbQ/8/

【讨论】:

啊!如此简单的修复。谢谢!【参考方案2】:

这个问题是由于浏览器认为容器 div 不够大,不能同时包含这两个元素造成的。这是由您的绝对定位引起的。如果您必须为此使用绝对定位,则需要确保 div#banner-wrapper 足够大以适应内容的增长。

您可以按照 x10 的说明在 CSS 中强制设置 div 的宽度,或者在单击处理程序中使用 javascript 更改其宽度,以便仅在需要时打开它。

【讨论】:

【参考方案3】:

如果你在#banner-wrapper 周围加上一个边框,你会看到会发生什么。

看起来 chrome 不会在其内容更改大小后重新调整元素的大小(因此它会导致浮动元素中断,因为它们不适合一行).. p>

另一种方法是将display:inline-block 用于内部元素。

示例:http://jsfiddle.net/K2UbQ/10/

【讨论】:

以上是关于具有绝对父级的 div 的 jQuery 动画宽度的主要内容,如果未能解决你的问题,请参考以下文章

具有固定父级的绝对定位元素上的 z-index [重复]

如何在保持垂直位置的同时使 div 与父级的右侧对齐?

jQuery:动画后div弹回全尺寸

div用绝对值填充父级的剩余高度

CSS - Div获取父级的剩余宽度空间

使div占据父级的剩余宽度[重复]