【问题标题】:Absolute positioned, width by floated children, won't exceed its own parent绝对定位,浮动子元素的宽度,不会超过它自己的父元素
【发布时间】:2013-03-06 11:07:55
【问题描述】:

好的,所以这有点难以解释。基本上,我有一个相对定位的 div,持有一个绝对定位的 div。绝对定位的 div 包含固定宽度的 div,它们是浮动的。这些浮动的 div 应该扩大绝对父级的宽度。

<div id="parent">
  <div id="stretchable-div">
    <div class="child">text</div>
    <div class="child">another text</div>
    <div class="child">more text</div>
  </div>
</div>

问题是,当原始相对位置div宽度小于绝对div时,这不起作用。

示例 - http://jsfiddle.net/8JJSf/91/

可以通过以下方式在 jQuery 中完成:

$('.dropdown').each(function(index){
var sum = 0;
$(this).find('.half').each( function(){ sum += $(this).outerWidth(); });
$(this).width( sum );
});

【问题讨论】:

    标签: css position absolute


    【解决方案1】:

    如果你想保持absolute的位置,你需要为此使用JavaScript

    将位置设置为absolute 时,元素不再是常规页面流的一部分,因此父级将不知道其子级的大小/位置。

    编辑:这里有一些 jQuery 代码,它根据子级调整父级的大小。它将拉伸父母以匹配最宽的孩子,以及所有孩子的高度。我不是 jQuery 专家,所以可能有更好/更简单的方法。父级高度最初应设置为 0px。

    $('#stretchable-div').each(function() {
        var parentWidth = $('#parent').width(),
            parentHeight = $('#parent').height(),
            childW = $(this).width() + $(this).position().left;
    
        if (childW > parentWidth) {
          $('#parent').width(childW);   
        }
    
        $('#parent').height($('#parent').height() + $(this).height() + $(this).position().top);   
    
    });
    

    http://jsfiddle.net/WHV7M/

    【讨论】:

    • 这让我想到了下一个问题。如何在 jQuery 中最好地实现这一点?
    • 这并不是我真正想要的,但我想它对其他人会有所帮助。我使用有效的 jQuery im 编辑了原始帖子。
    • 啊,我明白了,我误解了你的目标。很高兴你让它工作了! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多