【问题标题】:Css Grid - Top row restricted heightCss Grid - 顶行限制高度
【发布时间】:2018-09-28 21:17:21
【问题描述】:

在我的网络应用程序中,我使用 CSS 网格来构建一个基本主页。我希望顶部网格项:item-1 尽可能高,以便整个网格填充视口。见图片。

这样就不会在底部留下任何空隙。我尝试调整包装器的高度、grid-template-rows 中的行高并更改每个单独项目的 grid-column 值中的数字。如何让 item-1 覆盖更多的视口并将其下方的 4 个项目向下移动以接触底部?

.wrapper {
  margin-top: -25px;
  width:100vw;
  height: 70vh;
  // border: 2px solid #ccc;
  display: grid;
  grid-gap: 3px;
  grid-template-columns: repeat(4, 90px);
  grid-template-rows: repeat(4, 100px);
  justify-content: center;
  align-content: end;
  padding-bottom: 10px;
}

.box {
    background-color: #444;
    color: #fff;
    border-radius: 5px;
    padding: 10px;
    font-size: 150%;
    text-align: center;
  }

.item-1 {
  margin-top: 50px;
  background-image: url(../assets/imgs/placeholder.png);
  grid-column: 1 / 5;
  grid-row: 1 / 5;
}

.item-2 {
  grid-column: 1 / 3;
  background-color: rgba(250, 250, 250, 0.1);
}

.item-3 {
  grid-column: 3 / 5;
  background-color: rgba(250, 250, 250, 0.4);
}

.item-4 {
  grid-column: 1 / 3;
  background-color: rgba(250, 250, 250, 0.4);
}

.item-5 {
  grid-column: 3/ 5;
  background-color: rgba(250, 250, 250, 0.4);
}
<div class="wrapper">

    <div class="box item-1"></div>
    <div tappable (click)="loadAbout()" class="box item-2"><i class="icon fa fa-info"></i>About</div>
    <div tappable (click)="loadHowTo()" class="box item-3"><i class="icon fa fa-question"></i>How To</div>
  <div tappable (click)="loadList()" class="box item-4"><i class="icon fa fa-signal"></i>List</div>
<div tappable (click)="loadContact()" class="box item-5"><i class="icon fa fa-comments"></i>Contact Us</div>
</div>

【问题讨论】:

  • 请用您的代码重现问题。这将帮助我们帮助您。谢谢。

标签: html css css-grid


【解决方案1】:

将包装器 grid-template-rows 设置为 auto 100px 100px。

html,
body {
  font-family: Arial;
  margin: 0;
  padding: 0;
}

.grid {
  width: 100vw;
  height: 100vh;
  background: #333;
  display: grid;
  grid-template-rows: auto 100px 100px;
  grid-template-columns: repeat(4, 90px);
  grid-gap: 5px;
  justify-content: center;
}
.grid * {
  color: white;
  font-size: 120%;
  background: rgba(255, 255, 255, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}
.grid .grid-item-1 {
  grid-column: 1 / 5;
  grid-row: 1;
}
.grid .grid-item-2,
.grid .grid-item-3 {
  grid-row: 2;
}
.grid .grid-item-4,
.grid .grid-item-5 {
  grid-row: 3;
}
.grid .grid-item-2,
.grid .grid-item-4 {
  grid-column: 1 / 3;
}
.grid .grid-item-3,
.grid .grid-item-5 {
  grid-column: 3 / 5;
}
<div class="grid">
  <div class="grid-item-1"></div>
  <div class="grid-item-2">about</div>
  <div class="grid-item-3">how to</div>
  <div class="grid-item-4">list</div>
  <div class="grid-item-5">contact us</div>
</div>

【讨论】:

  • 效果很好,我可以删除单个项目中的所有负边距和高度值。谢谢!
【解决方案2】:

width: 100vh; 制作成您的.wrapper.item-1 div 可能是您正在寻找的。这应该省略对负边距、padding-bottom 和 align-content 属性的需要。

希望有帮助!

.wrapper {
  /*   margin-top: -25px; */
  width: 100vw;
  height: 100vh; /*   made 100vh */
  /*   // border: 2px solid #ccc; */
  display: grid;
  grid-gap: 3px;
  grid-template-columns: repeat(4, 90px);
  grid-template-rows: repeat(4, 100px);
  justify-content: center;
  /*   align-content: end; */
  /*   padding-bottom: 10px; */
}

.box {
  background-color: orange;
  color: #fff;
  border-radius: 5px;
  padding: 10px;
  font-size: 150%;
  text-align: center;
}

.item-1 {
  /*   margin-top: 50px; */
  background-image: url(../assets/imgs/placeholder.png);
  grid-column: 1 / 5;
  grid-row: 1 / 5;
  height: 100vh;
}

.item-2 {
  grid-column: 1 / 3;
  background-color: rgba(250, 250, 250, 0.1);
}

.item-3 {
  grid-column: 3 / 5;
  background-color: rgba(250, 250, 250, 0.4);
}

.item-4 {
  grid-column: 1 / 3;
  background-color: rgba(250, 250, 250, 0.4);
}

.item-5 {
  grid-column: 3/ 5;
  background-color: rgba(250, 250, 250, 0.4);
}
<div class="wrapper">
  <div class="box item-1"></div>
  <div tappable (click)="loadAbout()" class="box item-2"><i class="icon fa fa-info"></i>About</div>
  <div tappable (click)="loadHowTo()" class="box item-3"><i class="icon fa fa-question"></i>How To</div>
  <div tappable (click)="loadFreq()" class="box item-4"><i class="icon fa fa-signal"></i>List</div>
  <div tappable (click)="loadContact()" class="box item-5"><i class="icon fa fa-comments"></i>Contact Us</div>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2018-01-05
    • 2018-11-07
    • 2018-10-08
    • 2013-10-06
    • 2019-01-27
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多