CSS:为什么以百分比表示的元素的高度不起作用? [重复]

问题描述 投票:1回答:2

我正在尝试创建一个响应式正方形,并添加了以下内容:

.square {
  width: 50%;
  height: 50%;
}

但是,它水平扩展但垂直完全不扩展...

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  
  <style>
    body{
      background: #cccede;
      
    }
    

    .square {
  width: 50%;
  height: 50%;
       border: 2px solid black
}
  </style>
</head>
<body>

  <div class="square"></div>

</body>
</html>

[请,你们可以看一下代码片段,并帮助我弄清楚为什么盒子不考虑窗户的高度来计算其高度吗?

谢谢。

css
2个回答
1
投票

正如其他人所说,%是从元素的容器工作的,因此您需要手动设置body的高度/宽度。

但是,您也可以使用vh / vh,它们分别是视口高度和视口宽度的百分比的单位

vw
vw

1
投票

body { background: #cccede; } .square { width: 50vw; height: 50vh; border: 2px solid black }表示它的高度将为其父容器的一半。您的正方形很小,因为它在<body> <div class="square"></div> </body>标签内,很小。您可以通过以下方法使height: 50%与屏幕一样高:

body

0
投票

实际上,它显示的是身高的50%(实际上,它显示的是100%)。如以下示例所示,主体本身就是那个高度((为主体赋予红色边框的地方)

body { background: #cccede; } .square { width: 50vw; height: 50vh; border: 2px solid black }
<body>
  <div class="square"></div>
</body>
您可能要使用“视口单位”,例如body{
  background: #cccede;
  border:1px solid red;
}
.square {
  width: 50%;
  height: 50%;
  border: 2px solid black;
}

<div class="square">&nbsp;</div>
vh
或,只需在身体上设置一个高度(或最小高度):

body{ background: #cccede; border:1px solid red; } .square { width: 50vw; height: 50vh; border: 2px solid black; }
<div class="square">&nbsp;</div>
© www.soinside.com 2019 - 2024. All rights reserved.