我正在尝试将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;
以防这里也是外部小提琴:Example in Fiddle。
编辑:
需要将高度设置为特定像素。我从C#windows应用程序通过WebSocket获得表单布局(设计)。每个组件都是绝对位置,具有与C#应用程序完全相同的属性。这意味着,左,上,宽度和高度。
答案 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; }
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;
ul
的默认顶部和底部边距由browser's style sheet添加。
这些边距添加到height: 100%
时会导致溢出。
但即使修复了溢出问题,第8项仍紧紧包装在容器的底边:
这是因为line-height
的{{1}}也创造了高度(demo with line-height: 0
)
以下两种方法可以解决这个问题:
答案 2 :(得分:-1)