【发布时间】:2017-06-15 20:12:26
【问题描述】:
我有一个方形的弹性盒子,它被一个超链接完全覆盖。
现在我想将弹性框的内容垂直居中。
但是,使用属性为display: table 的div 元素和属性为display: table-cell; vertical-align: middle 的嵌套div 不起作用,因为我失去了正方形。
如果我使用divs 而不是ul 和li,我将失去能够在任何地方点击的属性。
我希望“文本”在红色框的水平和垂直中心对齐:
body {
margin: 0px;
width: 100%;
}
main {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.flex-container {
width: 100%;
}
ul {
display: flex;
flex-wrap: wrap;
list-style: none;
-webkit-padding-start: 0px;
-webkit-margin-before: 0px;
-webkit-margin-after: 0px;
}
li {
display: flex;
flex-direction: column;
width: 50%;
}
.red {
background-color: red;
}
.white {
background-color: white;
}
.tile:before {
content: '';
float: left;
padding-top: 100%;
}
.tile {
text-align: center;
}
<main>
<div class="flex-container">
<ul>
<li class="red">
<a href="/">
<div class="tile">
Text
</div>
</a>
</li>
</ul>
</div>
</main>
【问题讨论】:
-
去掉多余的div,让链接本身的flex项目覆盖整个高度,并使其内容居中。
标签: html css flexbox centering