【发布时间】:2016-04-06 08:27:11
【问题描述】:
我有li's 和flexlayout。每列有 3 个li's。 (flex-basis 设置为第三个。)在li 中,我有一个div 用于背景图像,另一个div 用于显示文本。我希望文本位于图像下方。图片应该占据房间的大部分。
由于某种原因,image 不存在。我将image 高度设置为80%,但是当我运行它并转到“检查元素”(在 chrome 中)时,div's 高度为 0。当我将其设置为像素数量时,(不是百分比),然后它就可以工作了。
我的问题是,如何将div 设置为百分比并仍然显示?
html, body {
margin: 0;
height: 100%;
}
div {
align-items: center;
justify-content: center;
height: 100%;
display: flex;
overflow: auto;
background-color:aqua;
}
ul {
margin-top: auto;
margin-bottom: auto;
height: calc(70% + 0px);
padding: 0;
display: inline-flex;
flex-wrap: wrap;
flex-direction: column;
width: 100%;
align-content: flex-start;
}
li {
flex-basis: calc(100% / 3 - 2px);
/* Subtract the border */
color: firebrick;
border: 1px solid firebrick;
background-color: greenYellow;
margin: 0px;
list-style-type: none;
box-sizing: border-box;
background-size: contain;
width: 200px;
}
.image {
background-image: url("http://i.imgur.com/nswXRR4.jpg");
background-size: contain;
background-position: 50%, 50%;
background-repeat: no-repeat;
margin: 5px;
height: 90%;
}
<div>
<ul>
<li>
<div class="image"></div>
<div class="num">1</div>
</li>
<li>
<div class="image"></div>
<div class="num">2</div>
</li>
<li>
<div class="image"></div>
<div class="num">3</div>
</li>
<li>
<div class="image"></div>
<div class="num">4</div>
</li>
</ul>
</div>
【问题讨论】:
-
% 宽度/高度仅在父级具有宽度/高度时设置。在没有真正查看您拥有的内容的情况下,我会说您可能正在尝试在内联元素中的块元素上设置 % 高度(内联元素没有“高度”)。