我正在尝试实现以下布局:
Body的元素有两个子元素:navbar
和container-md
。我们的想法是让导航栏没有填充。在container
里面有三个项目,中间的一个应该填满所有的高度空间。
我使用了这个html,但是it's not really working:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<title>Example 1</title>
</head>
<body>
<!-- Navbar -->
<nav class="navbar bg-dark">
<div class="container-fluid">
<span class="navbar-brand h1 text-white">Navbar</span>
</div>
</nav>
<!-- Container -->
<div class="container-md">
<div class="d-flex flex-column">
<div style="background-color: rgba(255, 0, 0, 0.1)">Topbar</div>
<div style="background-color: rgba(0, 255, 0, 0.1)" class="flex-grow-1">
Should fill all available space
</div>
<div style="background-color: rgba(0, 0, 255, 0.1)">Bottombar</div>
</div>
</div>
</body>
</html>
我也试着在body
或div.container
等元素上使用min-vh-100
和h-100
类的组合。最接近的方法是在container
上加上vh-100
,但这样做的话,身体高度将等于100vh + navbar.height
,这不是我想要的。我不需要任何卷轴。
当然,我可以尝试使用calc(100% - navbar.height)
,但这有点奇怪。
所以我的问题是如何实现这种布局?
在最佳实践方法中,我是否应该将navbar
包含在container
中?
1条答案
按热度按时间erhoui1w1#
好的,将所有内容都封装在
d-flex flex-column
中就解决了这个问题:另请注意,您必须将
h-100
用于html
和body
。唯一的问题是它是否适合“最佳实践”?