CSS中的vh和百分比?

Posted

技术标签:

【中文标题】CSS中的vh和百分比?【英文标题】:vh and percentage in CSS? 【发布时间】:2019-12-16 20:03:49 【问题描述】:

我试图让.navbar 屏幕的一半,但它没有正确显示。我不确定为什么?我猜还有另一个容器,但我不知道为什么?

    我将 body 设置为 100vh 以覆盖屏幕

    我有 .navbar 使用百分比的一半

html 文件:

    body 
      background-color: red !important;
      width: 100vh;
      height: 100vh;
    
    .navbar
      width: 50%;
      background-color: white;
    
    .navbarButtons
      background-color: aqua;
    
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
        <div class="navbar">
            <div class="navbarButtons">
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
            </div>
        </div>

【问题讨论】:

你应该为 .navbar 类添加 height:50vh 从 .all 类中移除宽度和高度 % 不接受弹性高度和窗口高度 从 .all 类中删除宽度或在该类中使用 width: 100vw 你想在哪里包含图片? 【参考方案1】:

我想,与其使用vh,不如使用% 方法。

试试下面的 CSS:

html,
  body 
    box-sizing: border-box;
    height: 100%;
    background-color: red;
  
.navbar 
    height: 50%;
    width: 50%;
    background-color: white;

.navbarButtons 
    background-color: aqua;

【讨论】:

我尝试在正文中使用百分比,但它并没有覆盖整个页面,只是一个很小的部分。【参考方案2】:

第一边注: vhvw 之间存在差异。您应该添加:

width: 100vw //vw is view width
height: 100vh // vh is view height

要使标题高度为屏幕的一半,只需添加:

height: 50vh

工作片段:

body 
      background-color: red !important;
      width: 100vw;
      height: 100vh;
    
    .navbar
      width: 100%; 
      height: 50vh;
      background-color: white;
    
    .navbarButtons
      background-color: aqua;
    
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
        <div class="navbar">
            <div class="navbarButtons">
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
              <button type="button" class="btn btn-outline-primary">Primary</button>
            </div>
        </div>

【讨论】:

【参考方案3】:

除了 Kareem 答案,您需要更新一些样式,其他宽 vh 视图高度 50 将适用于所有浏览器。

.all 
  background-color: red;


.navbar 
  background-color: white;
  height: 50vh;


.navbarButtons button 
  background-color: aqua;
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="% static " NavBarHtml.css " %" />
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>

<body class="all">
  <div class="navbar">
    <div class="navbarButtons">
      <button type="button" class="btn btn-outline-primary">Primary</button>
      <button type="button" class="btn btn-outline-primary">Primary</button>
      <button type="button" class="btn btn-outline-primary">Primary</button>
      <button type="button" class="btn btn-outline-primary">Primary</button>
      <button type="button" class="btn btn-outline-primary">Primary</button>
    </div>
  </div>
</body>

</html>

【讨论】:

以上是关于CSS中的vh和百分比?的主要内容,如果未能解决你的问题,请参考以下文章

20CSS中单位:px和%em和remvw|vh|vmin|vmax的区别

CSS子级不会继承高度。 VH 中的父身高。引导程序 3

px、rpx、em、rem 、vw/vh、百分比的区别?

响应式布局的常用解决方案对比(媒体查询百分比rem和vw/vh)

常见的CSS布局单位

利用css怎样实现宽和高的比例是1:1