用 flex 填充父级的高度
Fill height of parent with flex
我正在做一些响应式设计,其中我有一个 ul
,里面有一些 li
元素,文本长度有所不同。我希望 li
元素填充 ul
的高度,但我遇到了一些麻烦。当其中一个元素的内容变得太长时,li
元素具有不同的高度。示例如下:
ul {
display: flex;
align-items: center;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
height: 100%;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
如何使 li
元素具有相同的高度,而不考虑它们的内容?
将align-items: center
替换为ul
中的align-items: stretch
。并删除 li
.
中的 height: 100%
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
如项目名称所示,这意味着一个带有 链接 的菜单?!我把 a
标签放在每个 li
标签里。
通过添加 display: inherit
从父项继承 li
弹性规则。并添加这个 css 使你的穿刺垂直居中:
ul li a {
margin: auto 0 auto 0;
}
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
display: inherit;
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
ul li a {
margin: auto 0 auto 0;
}
<ul>
<li><a href="">Longer text here 1-2-3</a></li>
<li><a href="">About</a></li>
<li><a href="">Payment</a></li>
<li><a href="">Payment step 2</a></li>
<li><a href="">Receipt</a></li>
</ul>
我正在做一些响应式设计,其中我有一个 ul
,里面有一些 li
元素,文本长度有所不同。我希望 li
元素填充 ul
的高度,但我遇到了一些麻烦。当其中一个元素的内容变得太长时,li
元素具有不同的高度。示例如下:
ul {
display: flex;
align-items: center;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
height: 100%;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
如何使 li
元素具有相同的高度,而不考虑它们的内容?
将align-items: center
替换为ul
中的align-items: stretch
。并删除 li
.
height: 100%
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
<ul>
<li>Longer text here 1-2-3</li>
<li>About</li>
<li>Payment</li>
<li>Payment step 2</li>
<li>Receipt</li>
</ul>
如项目名称所示,这意味着一个带有 链接 的菜单?!我把 a
标签放在每个 li
标签里。
通过添加 display: inherit
从父项继承 li
弹性规则。并添加这个 css 使你的穿刺垂直居中:
ul li a {
margin: auto 0 auto 0;
}
ul {
display: flex;
align-items: stretch;
width: 650px;
background: red;
}
li {
display: inherit;
background: orange;
border-right: 1px solid #CCC;
list-style: none;
padding: 10px;
flex: 1;
}
ul li a {
margin: auto 0 auto 0;
}
<ul>
<li><a href="">Longer text here 1-2-3</a></li>
<li><a href="">About</a></li>
<li><a href="">Payment</a></li>
<li><a href="">Payment step 2</a></li>
<li><a href="">Receipt</a></li>
</ul>