我有一个动态大小的div offers
,然后在6个li标签内,每个标签高度为16.6%以填充div。每个li
代码中都有一个a
代码,但我希望垂直对齐 a
代码。我看了很多不同的解决方案,似乎没有一个对我有用。我的代码的一个例子是:
.offers {
background-color: yellow;
height: 200px;
}
.offers li {
display: table-cell;
float: left;
vertical-align: middle;
border: solid 1px;
box-sizing: border-box;
height: 16.6%;
width: 100%
}
.offers li a {
background-color: red;
}

<div class="offers">
<li><a href="#">Link1</a></li>
<li><a href="#">Link2</a></li>
<li><a href="#">Link3</a></li>
<li><a href="#">Link4</a></li>
<li><a href="#">Link5</a></li>
<li><a href="#">Link6</a></li>
</div>
&#13;
这是一个codepen - http://codepen.io/anon/pen/dXXJEY
答案 0 :(得分:2)
如果您想使用显示表单元格,请使用以下代码替换您在codepen中的css,它应该可以工作:
.offers {
background-color:yellow;
height:200px;
display: table;
width: 100%;
}
.offers li {
display:table-row;
}
.offers li a {
background-color:red;
display: table-cell;
vertical-align:middle;
border:solid 1px black;
}
答案 1 :(得分:1)
您可以使用Flexbox
flex-direction: column
上的.offers
和flex: 1
上的li
使每个li
均匀分布,而不是使用%
display: flex
使用align-items: center
和li
,使a
垂直居中
.offers {
background-color: yellow;
height: 200px;
display: flex;
flex-direction: column;
padding: 0;
}
.offers li {
border: solid 1px black;
box-sizing: border-box;
display: flex;
align-items: center;
flex: 1;
}
.offers li a {
background-color: red;
}
<ul class="offers">
<li><a href="#">Link1</a></li>
<li><a href="#">Link2</a></li>
<li><a href="#">Link3</a></li>
<li><a href="#">Link4</a></li>
<li><a href="#">Link5</a></li>
<li><a href="#">Link6</a></li>
</ul>
答案 2 :(得分:0)
使用display:flex;在李元素上。之后放上align-items:center;在它上面。
为crossbrowser compatibilitybillity使用前缀。
答案 3 :(得分:0)
添加以下css。
.offers li:before {
display: inline-block;
vertical-align: middle;
content: '';
height: 100%;
width: 1px;
}
.offers li a {
background-color:red;
display: inline-block;
vertical-align: middle;
}
答案 4 :(得分:0)
.offers {background-color:yellow;height:200px;}
.offers li {
vertical-align:middle; border:solid 1px;
box-sizing:border-box;
height:33.33px;
width:100%
}
.offers li a {
background-color:red;
line-height: 33.33px;
}
.offers li a span {line-height: 1em;}
<div class="offers">
<li><a href="#"><span>Link1</span></a></li>
<li><a href="#"><span>Link2</span></a></li>
<li><a href="#"><span>Link3</span></a></li>
<li><a href="#"><span>Link4</span></a></li>
<li><a href="#"><span>Link5</span></a></li>
<li><a href="#"><span>Link6</span></a></li>
</div>