繁体   English   中英

我如何使用 Bootstrap 5 为 100 以外的值设置相对于视口的高度?

[英]How an I set height relative to viewport for values other than 100 with Bootstrap 5?

这是尝试创建一种我过去创建的 div 类型,但使用具有最少非引导 css 的自定义样式表。 它还没有完全到位,但我正在尝试将我写入 django 静态文件 CSS 的每个样式规则转换为引导程序类。 我被困在基于视口的大小调整上。

在我发现这些文档之前的状态是这样的,高度拟合内容如您所料:

高度适合内容

我在 Bootstrap 5 中发现了这一点

我将我的班级设置为“vh-100”,这非常酷,将 div 设置为占据视口的整个垂直高度。

但是等等,它与整个视口的高度相匹配,而不是在计算出导航栏和填充后的其余部分。 不过有道理。

好n长

惊人的! 只需要把它剃掉一点,这样它就适合实际的视口,我们就有了想要的最终状态。

查看引导程序文档,您通常可以像我们在这里所做的那样指定 25%、50%、75% 或 100%。 好吧,它没有谈论基于视口的大小调整,但它在很多引导程序的东西中都有,所以我猜它在这里是一样的。 所以我试一试。 75% 的视口应该正好给它一点底部区域。

所以现在“vh-50”或“vh-75”

不

好吧,奇怪 - 视口必须是 100 否则它会回退到基于内容的大小。 在文档中没有关于基于视口大小的任何其他值的其他示例,我无法在野外找到任何其他示例。

以防万一,这是该 div 的 html(django 应用程序中 jinja 内容块的一部分)

 {% block content %} <div class="body-area bg-dark text-light my-5 vh-75"> <div class="container"> <div class="row"> Hi </div> </div> </div> {% endblock %}
这是我的 CSS。 我已经尝试从我的 css 中删除所有高度实例,但没有任何效果。 html 和 body 是通过基本模板应用的,您可以看到它的工作原理,因为背景渐变显示正确(否则它会平铺而没有该 body/html 样式)。

 .body-area { margin-left: auto; margin-right: auto; width: 75%; border: 10px solid #000000; border-radius: 15px; } html { height: 100%; } body { height: 100%; margin: 0; background-repeat: no-repeat; background-attachment: fixed; }

虽然我开始认为我可能不应该打扰,并且可能不会在这个特定的应用程序中,但我认为能够根据视口的百分比来调整大小真的很有用,尤其是对于移动设备应用程序。

那么我是不是完全错了呢? 除了 100 的视口外,我不应该调整任何大小吗? 我应该如何解决这个问题,无论是使用我正在尝试的引导工具还是我目前不知道的最佳实践?

我希望那里的任何 CSS/bootstrap 向导都知道一个技巧,我希望这对我和将来遇到此问题的其他人都有帮助。

您不应该手动设置高度。 您应该使用flexbox 网格通过适当的对齐类自动完成它。

  1. 在导航栏和内容元素周围放置一个 flex 列,类为vh-100 这可以只是 body 元素。
  2. 将类flex-fill放在内容元素上,使其伸展以填充剩余空间。

 <head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> </head> <body class="d-flex flex-column vh-100"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <!-- ... --> </div> </div> </nav> <div class="body-area container-fluid bg-dark text-light flex-fill"> <div class="row"> <div class="col"> Hi </div> </div> </div> </body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM