為什麼具有固定寬度和最大寬度為90%的網格子項會溢出網格軌道?
P粉471207302
P粉471207302 2024-04-05 14:33:39
0
1
1573

問題:

我的問題非常簡單,我想知道為什麼.header元素在達到1500像素的視窗寬度時會溢出其網格軌道。

程式碼:

* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

body {
  background: #6e28d9;
  color: white;
}

.container {
  display: grid;
  grid-template-areas: 'header';
  grid-template-columns: 1fr;
  background-color: rgba(255, 255, 255, 0.2);
}

.header {
  display: flex;
  justify-content: space-between;
  grid-area: header;
  width: 1500px;
  max-width: 90%;
  margin: 0 auto;
}
<body>
    <div class="container">
      <div class="header">
        <div class="header-start">header start</div>
        <div class="header-end">header end</div>
      </div>
    </div>
  </body>

我想要的效果:

我的想法是讓.header元素的寬度為1500像素。當空間不足時,.header應該佔據其網格軌道的90%。

我嘗試過的方法:

我透過設定width: min(1500px, 90%)並在.header元素中刪除max-width,成功實現了這個效果,但我不知道具體發生了什麼事。我猜測網格軌道是根據內容的寬度來計算其寬度的。目前我不太確定1fr的確切意義是什麼。

我的想法:

每個人都說Grid很棒,但當我離開Flexbox的溫暖時,總是遇到麻煩。

P粉471207302
P粉471207302

全部回覆(1)
P粉238433862

使用90vw而不是90%似乎對此起作用

*{
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

body {
  background: #6e28d9;
  color: white;
}

.container{
  display: grid;
  grid-template-areas: 'header';
  grid-template-columns: 1fr;
  background-color: rgba(255, 255, 255, 0.2);
}

.header{
  display: flex;
  justify-content: space-between;
  grid-area: header;
  width: 1500px;
  max-width: 90vw;
  margin: 0 auto;

  border: 1px solid red; /*Added just to visualize the exact width*/
}
<div class="container">
  <div class="header">
    <div class="header-start">header start</div>
    <div class="header-end">header end</div>
  </div>
</div>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板