我的列表中包含div
<ul>
<li>
<div class="date">today</div>
<div class="desc">lorem ipsum</div>
<div class="action">
<p>
<a class="button">X</a>
</p>
</div>
</li>
<li>....</li>
<li>....</li>
</ul>
如何在div.action中垂直对齐a.button?
该列表的CSS是使用Susy生成的,CSS看起来像这样:
ul {
list-style: none outside none;
}
li {
margin-left: 12.766%;
margin-right: 12.766%;
margin-bottom: 10px;
background-color: #eee;
display: block;
}
li:after {
clear: both;
content: "";
display: table;
}
.date {
float: left;
margin-right: 2.12766%;
width: 10.6383%;
}
.desc {
float: left;
margin-right: 2.12766%;
width: 74.4681%;
}
.action {
float: right;
text-align: center;
margin-right: 0;
width: 10.6383%;
}
我不知道LI的高度,因为&#34; desc&#34;文字可以是任何长度。
以下是codepen.io上的代码 - &gt; http://codepen.io/anon/pen/CFhos
答案 0 :(得分:1)
Flexbox几乎可以对齐任何东西 - 甚至浮动的元素......
只需将以下规则添加到li
:
display: flex;
align-items: center; /*align vertical */
<强> Updated CODEPEN 强>
答案 1 :(得分:1)
您可以设置按钮的样式以完成此操作:
.button{
position: relative;
top: 50%;
transform: translateY(-50%);
}
答案 2 :(得分:0)
你可以不用浮动来做到这一点:
ul {
list-style: none outside none;
}
li {
display: table;
margin-left: 12.766%;
margin-right: 12.766%;
margin-bottom: 10px;
background-color: #eee;
}
p {
display: table-cell;
margin: 0;
padding: 0;
}
li:after {
clear: both;
content: "";
display: table;
}
.date {
display: table-cell;
vertical-align: middle;
margin-right: 2.12766%;
width: 10.6383%;
}
.desc {
display: table-cell;
vertical-align: middle;
margin-right: 2.12766%;
width: 74.4681%;
}
.action {
display: table-cell;
vertical-align: middle;
margin-right: 0;
width: 10.6383%;
}