【发布时间】:2016-05-05 19:04:07
【问题描述】:
我正在尝试制作一个非常简单的页面,但我正在努力寻找布局的解决方案。
我想要实现的是一个简单的标题,下面是一些内容(我不知道它的实际高度,但可能不会覆盖视口的整个高度),并带有一个完整的背景封面图像剩余高度。
我尝试在要保存内容的容器上使用 100vh,但正如您在代码笔中看到的那样:http://codepen.io/renttless/pen/vGvzRj,它会创建一个滚动条,其大小显然与前一个兄弟的大小相同,这将是标题。
代码如下:
<body>
<div class="containerTest">
<header>
<nav>
<ul>
<li>Home</li>
<li>Who are we</li>
<li>Our work</li>
<li>Contact</li>
</ul>
</nav>
</header>
<section class="sectionTest">
<div class="backgroundTest">
<h1>I'm a full size h1</h1>
<p>I'm some paragraph</p>
</div>
</section>
</div>
CSS:
html,body{
height: 100%;
}
.sectionTest .backgroundTest{
background-color:red;
height:100vh;
}
【问题讨论】:
-
那么
.sectionTest的高度应该是<viewport height> - <header height>还是100vh - <header height>? -
如何计算?这是预期的行为吗?还是 100vh 实际上是整个屏幕的视口?
-
这是意料之中的。如果您的视口高度为 1000 像素且标题为 100 像素,那么您将在放置时获得一个滚动条,并且标题后的元素等于浏览器视口的高度。所以你得到
100px (header) + 1000px (content after header) = 1100px并出现滚动条,因为你所有的内容的高度都大于视口的高度。如果您的标题有一个设定的高度,您可以尝试使用calc()并从视口高度中减去标题height: calc( 100vh - 100px ); -
完全正确。内容超过100vh的容器高度怎么办?因为它没有展开。
-
我没有关注。你想要的结果是什么?如果您的内容占用了比视口更多的空间,您将隐藏溢出或提供滚动条。滚动条出现的位置取决于您。像现在一样在视口上,或者你可以在包含内容的元素上有一个滚动条。
标签: html css viewport-units