我想使用flexbox垂直对齐一些内容在一个<li>,但没有很大的成功。
我在网上检查过,许多教程实际上使用了一个包装器div,它从父上的伸缩设置中获得align-items:center,但我想知道是否有可能删除这个额外的元素?
在这个例子中,我选择使用flexbox,因为列表项的高度将是一个动态%。
* {
填充:0;
保证金:0;
}
超文本标记语言
身体{
高度:100%;
}
ul {
高度:100%;
}
李{
显示:flex;
justify-content:中心;
align-self:中心;
背景:银色;
宽度:100%;
高度:20%;
}
< ul >
<li>这是文本</li>
< / ul >
将li中的显示设置为flex,并将align-items设置为居中。
li {
display: flex;
/* Align items vertically */
align-items: center;
/* Align items horizontally */
justify-content: center;
}
我个人也会以伪元素为目标,并使用边界框
(通用选择器*和伪元素)
*,
*::before,
*::after {
padding: 0;
margin: 0;
box-sizing: border-box;
}
结果
HTML
<ul class="list">
<li>This is the text</li>
<li>This is another text</li>
<li>This is another another text</li>
</ul>
使用align-items而不是align-self,我还添加了flex-direction到column。
CSS
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
}
.list {
display: flex;
justify-content: center;
flex-direction: column; /* <--- I added this */
align-items: center; /* <--- Change here */
height: 100px;
width: 100%;
background: silver;
}
.list li {
background: gold;
height: 20%;
}