首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应式div视区大小的50%高度

响应式div视区大小的50%高度
EN

Stack Overflow用户
提问于 2015-04-08 09:57:07
回答 3查看 9.1K关注 0票数 3

我尝试创建一个由四个方框组成的网格,每个方框的高度和宽度各为全屏幕大小的50%,如下图所示:http://a.pomf.se/gqnzzs.jpg

我的问题是我不能让50%的高度工作。如何在视区大小的50%的高度上设置彼此上方的2个div的高度?

HTML:

代码语言:javascript
复制
<div class="wrapper">
  <div class="row">
    <div class="panel-1">... </div>
    <div class="panel-2">...</div>
  </div>
  <div class="row">
    <div class="panel-3">...</div>
    <div class="panel-4">...</div>
  </div>
</div>

CSS:

代码语言:javascript
复制
.wrapper{
    width: 100%;
    height: 100%;
    display: inline-block;}

.panel-1{
    width: 50%;
    float: left;
    height: 50%;}

.panel-2{
    width: 50%;
    float: left;
    height: 50%;}

.panel-3{
    width: 50%;
    float: left;
    height: 50%;}

.panel-4{
    width: 50%;
    float: left;
    height: 50%;}

我非常感谢大家的帮助!

问候

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-08 09:58:38

supported browsers,中,您可以使用viewport-percentages unitsvhvwvminvmax

在这种情况下,只需使用50vh,其中1个单位等于初始包含块高度的1%。

代码语言:javascript
复制
.panel-1, .panel-2,
.panel-3, .panel-4 {
    height: 50vh;
    width: 50%;
    float: left;
}

值得注意的是,如果您仍然希望使用基于百分比的单位,则还需要定义所有父元素的高度:

代码语言:javascript
复制
html, body, .wrapper {
    height: 100%;
}
.row {
    height: 50%;
}
.panel-1, .panel-2,
.panel-3, .panel-4 {
    height: 100%;
    width: 50%;
    float: left;
}
票数 9
EN

Stack Overflow用户

发布于 2015-04-08 10:34:35

flexbox解决。Caniuse

没有浮动,没有清晰的修复--简单明了;

代码语言:javascript
复制
*,
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html,
body {
  padding: 0;
  margin: 0;
  height: 100%;
}
body {
  background-color: #333;
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  -webkit-box-orient: horizontal;
  -moz-box-orient: horizontal;
  -o-box-orient: horizontal;
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  -o-box-lines: multiple;
  -webkit-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
}
.flex__item {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 0 0 50%;
  -ms-flex: 0 0 50%;
  flex: 0 0 50%;
  height: 50%;
  background-color: #777;
  border: 1px solid #000;
}
.flex__item:nth-child(1) {
  background-color: #9aa0a8;
}
.flex__item:nth-child(2) {
  background-color: #a7c4b5;
}
.flex__item:nth-child(3) {
  background-color: #a9d8b8;
}
.flex__item:nth-child(4) {
  background-color: #beffc7;
}
代码语言:javascript
复制
<div class="flex__item"></div>
<div class="flex__item"></div>
<div class="flex__item"></div>
<div class="flex__item"></div>

票数 3
EN

Stack Overflow用户

发布于 2018-07-06 16:33:55

您需要设置: html {高度100%;宽度100%;} body {宽度100%;高度100%;}

那么"div“将与"height:50%”一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29504554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档