在响应式框架中将 LI 设置为 100% 高度
Posted
技术标签:
【中文标题】在响应式框架中将 LI 设置为 100% 高度【英文标题】:Setting a LI to 100% height in a responsive framework 【发布时间】:2013-05-05 06:18:05 【问题描述】:我将演示页面分为 10 个列表项,每个项使用 10% 的宽度和 400 像素的高度。但是我希望每个列表项以覆盖整个屏幕的 100% 高度显示。我正在尝试设置列表项的高度,但是当我使用 'height:100%' 时,列表项不断消失。我该如何管理?
HTML
<div class="container">
<ul class="cbp-rfgrid">
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
<li><a href="#"><div><h3>Felis catus</h3></div></a></li>
</ul>
</div>
CSS
*
padding: 0;
margin: 0;
html, body
height: 100%;
background-color:#03F;
.container
height: 100%;
.cbp-rfgrid
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
.cbp-rfgrid li
position: relative;
float: left;
overflow: hidden;
width: 10%; /* Fallback */
width: -webkit-calc(100% / 10);
width: calc(100% / 10);
height:400px; /* CURRENT HEIGHT, SHOULD BE 100% BROWSER HEIGHT */
.cbp-rfgrid li a
display: block;
width: 100%;
cursor: pointer;
.cbp-rfgrid li a div
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
background: rgba(71,163,218,0.5);
display: -webkit-flex;
display: -moz-flex;
display: -ms-flex;
display: flex;
-webkit-align-items: center;
-moz-align-items: center;
-ms-align-items: center;
align-items: center;
text-align: center;
opacity: 0;
.cbp-rfgrid li a:hover div
opacity: 1;
.cbp-rfgrid li a div h3
width: 100%;
color: #fff;
text-transform: uppercase;
font-size: 1.4em;
letter-spacing: 2px;
padding: 0 10px;
【问题讨论】:
如果没有活生生的例子,真的很难看出你的问题出在哪里。请至少提供一个js fiddle 来揭露您的问题。 嗨 Slytael,请查看以下解决方案! 【参考方案1】:cbp-rfgrid
类添加 height:100%;
并将 height:400px;
更改为 height:100%;
.cbp-rfgrid
margin: 0;
padding: 0;
list-style: none;
position: relative;
width: 100%;
height: 100%;
.cbp-rfgrid li
position: relative;
float: left;
overflow: hidden;
width: 10%; /* Fallback */
width: -webkit-calc(100% / 10);
width: calc(100% / 10);
height:100%; /* CURRENT HEIGHT, SHOULD BE 100% BROWSER HEIGHT */
实时示例: http://jsfiddle.net/g9nDQ/1/
【讨论】:
【参考方案2】:这个问题只是因为包含li
的ul
没有设置高度。所以li
占了ul
的 100%,后者根据他的内容进行扩展。
将height
设置为ul,您的li
将具有height based on the
ul` 高度。
但是,如果您有多个li
和height:100%
,则ul
上会出现一个滚动条,因为ul
标记之后的文本将在第一个li
之后和第二个li
之后(像这样:http://jsfiddle.net/D5EHN/)。一个很好的解决方法(在body
而不是ul
上设置滚动条)是计算li
的数量并简单计算li * 100%的数量,然后将li
高度设置为100% / 里数。因此,如果您有 4 个li
,ul
的高度将为 400%,而 li 的高度将为 25%(如:http://jsfiddle.net/D5EHN/2/)。
希望对你有帮助
【讨论】:
【参考方案3】:100% 的高度正好等于 height:auto 仅通过其内容扩展高度。尝试设置像 min-height:400px 这样的高度。
【讨论】:
以上是关于在响应式框架中将 LI 设置为 100% 高度的主要内容,如果未能解决你的问题,请参考以下文章