我有一个列表,里面有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的高度,因为"desc"文本可以是任何长度。
这是codepen.io->上的代码http://codepen.io/anon/pen/CFhos
Flexbox可以对齐任何东西,甚至是浮动元素。。。
只需将以下规则添加到li
:
display: flex;
align-items: center; /*align vertical */
更新的CODEPEN
您可以这样设置按钮的样式:
.button{
position: relative;
top: 50%;
transform: translateY(-50%);
}
此处的示例:http://jsfiddle.net/4amdxtq8/
您可以在不浮动的情况下执行此操作:
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%;
}
http://codepen.io/anon/pen/yxhkA