繁体   English   中英

使网格中的内容在CSS Grid中等于高度

[英]Making the content inside grid items equal height in CSS Grid

我试图弄清楚如何让我的网格的两列高度相同。 这就是我所追求的:

xxxxxxxxxxxxxxxxx   xxxxxxxxxxxxxxxxxxx 
x qqqqqqqqqqqqq x   x qqqqqqqqqqqqqqq x
x qqqqqqqqqqqqq x   x qqqqqqqqqqqqqqq x
x x   x qqqqqqqqqqqqqqq x
x x   x qqqqqqqqqqqqqqq x
xxxxxxxxxxxxxxxxx   xxxxxxxxxxxxxxxxxxx

这是x表示网格的边框(显示:网格),q是标签和输入字段。 这是代码集中的所有代码和相同的链接。

.container {
    font-family: Arial, Helvetica, Sans-Serif;
    color: #666;
    font-size: 12px;
    position: absolute;
    width: 100%;
    margin: 0 auto;
    border: 1px solid #666;
    background-color: #fff;
    height: 100%;
}

.outerGrid {
  display: grid;
  grid-template-columns: 1fr 2fr 3fr 1fr;
  grid-template-rows: 80px 1fr 1fr 30px;
  grid-gap: 20px;
  grid-template-areas: 
    "title title title title" 
    ". companyInfo contactInfo . "
    ". demoInfo demoInfo . " 
    "footer footer footer footer";
}

.companyInfoContainer {
  grid-area: companyInfo;
}

.companyInfoBox {
    padding: 20px;
    border: 1px solid #666;
}

.contactInfoContainer {
    grid-area: contactInfo;
}

.contactInfoBox {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    grid-gap: 20px;
    grid-template-areas: 'contactLeft contactRight';
    border: 1px solid #666;
    padding: 20px;
}

.titleRow {
  display: flex;
  -webkit-box-pack: justify;
  justify-content: space-between;
  align-content: flex-start;
  margin-bottom: 10px;
  color: #333;
  font-size: 16px;
}

.formControl {
    -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
    display: block;
    height: 37px;
    padding: 5px;
    line-height: 1.25;
    background-color: #fff;
    width: 100%;
    background-clip: padding-box;
    border: 1px solid rgba(0,0,0,.15);
    border-radius: .25rem;
    transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
    margin-bottom: 5px;
    background-image: none;
}

.formTitleTop {
    margin-bottom: 10px;
}

.formTitle {
    margin: 10px 0;
}

......和html:

<div class='container'>
  <div class="outerGrid">
    <div class="companyInfoContainer">
      <div class="titleRow">
        <div>Company Information</div>
        <div>* Required</div>
      </div>
      <div class="companyInfoBox">
        <div class="formTitleTop">Company Name*</div><input type="text" class="formControl" value="">
        <div class="formTitle">Website (leave blank if not website)</div>
        <input type="text" class="formControl" value=""></div>
    </div>
    <div class="contactInfoContainer">
      <div class="titleRow">
        <div>Contact Information</div>
        <div class="required">* Required</div>
      </div>
      <div class="contactInfoBox">
        <div class="contactLeft">
          <div class="formTitleTop">First Name*</div><input type="text" class="formControl" value="">
          <div class="formTitle">Last Name*</div><input type="text" class="formControl" value="">
          <div class="formTitle">Role*</div><input type="text" class="formControl" value=""><input type="button" value="Add Additional Contacts"></div>
        <div class="contactRight">
          <div class="formTitleTop">Phone Number*</div><input type="text" class="formControl" value="">
          <div class="formTitle">Mobile Phone Number</div><input type="text" class="formControl" value="">
          <div class="formTitle">Email Address*</div><input type="text" class="formControl" value=""></div>
      </div>
    </div>
  </div>
</div>

codepen: https ://codepen.io/GuitarJ/pen/QqZRYR

我似乎无法将左列拉伸到右侧col高度的高度(我认为也是行高度。我希望css网格有办法做到这一点,但很难搜索到这个确切的问题。

我也尝试将高度设置为100%,但之后它没有尊重网格间隙并且下降得太远了。

如何使左侧为行高?

那些网格项目的高度已经相同。 它们都是第二行的高度,即1fr ,由网格容器上的grid grid-template-rows定义。

如果你在这两个项目( .companyInfoContainer.contactInfoContainer )周围放置一个边框,你会明白我的意思。

修订演示

您似乎希望网格项的边界子项( .companyInfoBox.contactInfoBox )使用所有可用高度。

由于网格项不是网格容器, 因此不能在子项上使用网格属性

一种简单有效的解决方案是使网格项目成为容器。 然后,您可以将flex属性应用于子项,这可以使它们占用可用空间。

.companyInfoContainer {
   display: flex;
   flex-direction: column;
}

.companyInfoBox {
   flex: 1;
 }

.contactInfoContainer {
  display: flex;
  flex-direction: column;
}

.contactInfoBox {
   flex: 1
}

修订演示

更多细节: Descendant元素不响应网格属性

使用display property flex with item height auto

例如

.flex-container {
display: flex;
width: 400px;
height: auto;

}

.flex-item {
background: red;
width: 100px;
height: auto;
margin: 10px;

}

如果网格没有改变(您不动态插入新元素或更改现有垂直大小),您可以手动设置相同的大小

.companyInfoBox {
    padding: 20px;
    border: 1px solid #666;
    height: 265px;
}

这很简单并且有效(考虑到上面列出的限制):

暂无
暂无

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

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