高度100%的Fieldset孩子太大了

时间:2016-10-03 09:46:29

标签: html css css3 flexbox

我正在尝试将fieldset孩子拉伸到100%,但是孩子(ul)太大而且出现了一些溢出(在我的情况下会被切断)。

如何将fieldset孩子伸展到100%,但没有溢出?



fieldset {
  height: 300px;
  overflow: hidden;
}
ul {
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: space-around;
    background-color: #ffffbb;
}

<fieldset>
  <legend>How to stretch child</legend>
  <ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
  </ul>
</fieldset>
&#13;
&#13;
&#13;

以防这里也是外部小提琴:Example in Fiddle

编辑:

需要将高度设置为特定像素。我从C#windows应用程序通过WebSocket获得表单布局(设计)。每个组件都是绝对位置,具有与C#应用程序完全相同的属性。这意味着,左,上,宽度和高度。

3 个答案:

答案 0 :(得分:4)

fields使用自动高度,并为li添加高度,行高

它的工作清晰而且很好。

编辑:当然,您需要删除溢出:隐藏; 属性;

fieldset {
    height: auto;
}

ul {
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: space-around;
    background-color: #ffffbb;
}

li {
    height: 40px;
    line-height: 40px;
}
<fieldset>
  <legend>How to stretch child</legend>
  <ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
  </ul>
</fieldset>

答案 1 :(得分:4)

解决方案

将此添加到您的代码中:

ul { margin: 0; }

&#13;
&#13;
fieldset {
  height: 300px;
  overflow: hidden;
}
ul {
  display: flex;
  flex-direction: column;
  height: 100%;
  justify-content: space-around;
  background-color: #ffffcc;
  margin: 0;
}
&#13;
<fieldset>
  <legend>How to stretch child</legend>
  <ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
  </ul>
</fieldset>
&#13;
&#13;
&#13;

说明

ul的默认顶部和底部边距由browser's style sheet添加。

enter image description here

这些边距添加到height: 100%时会导致溢出。

但即使修复了溢出问题,第8项仍紧紧包装在容器的底边:

enter image description here

这是因为line-height的{​​{1}}也创造了高度(demo with line-height: 0

以下两种方法可以解决这个问题:

  1. 定义图例的高度,然后调整legend的高度。像这样:

    ul

    demo

  2. 降低legend { height: 15px; } ul { height: calc(100% - 15px); } 的高度,如下所示:

    ul

    demo

答案 2 :(得分:-1)

Flexbox无法在removeAllCachedResponses source中使用。

您可以使用removeAllCachedResponses代替codepen

HTML

<fieldset>

CSS

<div>