【问题标题】:Prevent DIV Container from growing in height when adding new children添加新子项时防止 DIV Container 高度增长
【发布时间】:2013-11-13 22:22:04
【问题描述】:

我有一个以百分比高度为中心的动态包装器。

里面是一个固定高度的导航栏和一个占据剩余空间(100% 的包装器减去导航栏)的新闻提要。

我正在通过 javascript 将新的新闻项目添加到提要中。

问题:容器随着新闻而增长。 如果它有一个固定的高度,比如 200px,它就不会增长;但这不是我想要的。

这个问题快把我逼疯了,感谢任何帮助!

在这里查看:http://codepen.io/anon/pen/vedwA

[更新]

如果我在#itemsContainer 中有一个文本区域而不是新闻源怎么办?当然,textarea 还必须占据 itemscontainer 的 100% 的高度和宽度,并且即使用户输入更多文本,也必须保持该大小。

在我的示例中,textarea 位于外部 #wrapper 内,但会将导航推到顶部。在 codepen 示例中,textarea 显示正确的行为,但不占用 100%。无论哪种方式,它都不起作用:-( http://codepen.io/anon/pen/nGmua

** 解决方案**

position: absolute;
top: 50px;
bottom: 0px;
width: 100%;

我们不是通过 height = 100% 而是通过固定的顶部和底部 = 0px 来拉伸容器; 只要父容器有 position: relative;

【问题讨论】:

    标签: jquery css responsive-design overflow


    【解决方案1】:

    问题似乎是各种形式的display: table 以及#wrapper 的默认overflow: visible。从技术上讲,您的新闻项目并没有溢出,而是扩大了表格。

    解决方案需要将overflow: hidden 应用于#wrapper。但是,overflow 属性不适用于表格元素。所以,我们摆脱了display: table。请参阅下面代码中的注释。

    希望对你有帮助。

    body {
      background: #900;
    }
    
    div {
      padding:0px;
      margin:0px;
      background: grey;
      color: white;
      text-align: center;
    }
    
    #wrapper{
      position:absolute;
      width: 40%;
      height: 50%;
      background: red;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      border: 1px solid white;
      /* display: table;  should be block */
      overflow: hidden /* added */
    }
    
    #navigation{
      top:0px;
      height:50px;
      width: 100%;
      background: black;     
    }
    
    #itemsContainer{
      top:20px;
      /* width:100%;
         height: 100%;
         overflow: hidden;  you don't need these any more */
      background:red;
      /* display:table-row; should be block */
    }
    
    #itemsContainer div{
      border-bottom: 1px dashed white;
      padding: 1em;  
    }
    

    【讨论】:

    • 哇,我不敢相信我花了半个晚上试错。您的解决方案绝对完美!谢谢
    • @Beezle-Bug 很高兴听到这个消息。我已经编辑了我的答案以解释它为什么有效。谢谢采纳!
    • 我有另一个给你:如果我在 itemsContainer 中有一个高度为 100% 的
    • @Beezle-Bug 最简单的解决方案是去掉#wrapperheight: 50%。如果这不是一个选项,请将 textarea 标记的行数强制为 5:<textarea name="inputfield" id="inputfield" onclick="firstSelect()" placeholder ="Paste your text here and hit play!" rows="5">。下次我会告诉你我的费用。 ;)
    • 对不起@hqcasanova,不能为此支付任何费用,因为摆脱我的计划不符合我的计划;-) 一天后,我发现了这个有趣的帖子:stackoverflow.com/questions/2434602/… the我的第二个问题的酷解决方案如下: position: absolute;顶部:18px;底部:0px;宽度:100%;只要父容器有 position: relative;
    猜你喜欢
    • 2014-11-02
    • 1970-01-01
    • 2012-02-14
    • 2016-06-13
    • 1970-01-01
    • 2016-09-15
    • 2018-06-21
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多