CSS3 网格 - 为什么行没有按列/行标准定位



我正在尝试使用网格布局设计带有向上/确定/向下/向左/右按钮的电视遥控器。问题是结果出乎我的意料。我只想定义 3 行和 3 列,它们之间的特定位置和空间平均分配。我做错了什么?结果如下所示

Up       left   OK
right  down

而不是

         Up
         |
<left----OK---Right-->
         |
        Down

法典

#grid {
display: grid;
grid-template-columns:
    /* 1 */ auto
    /* 2 */ auto
    /* 3 */ auto;
grid-template-rows:
    /* 4 */ auto
    /* 5 */ auto
    /* 6 */ auto;
}
#up { grid-column: 2; grid-row: 1; }
#ok { grid-column: 2; grid-row: 2; }
#down { grid-column: 2; grid-row: 3; }
#left { grid-column: 1; grid-row: 3; }
#right { grid-column: 3; grid-row: 3; }
}
<div id="grid">
  <div class="up">Up</div>
  <div class="left">left</div>
  <div class="ok">OK</div>
  <div class="right">right</div>
  <div class="down">down</div>
</div>

你的主要问题是你在内部元素上设置了类,并且是样式 id

#grid {
display: grid;
grid-template-columns:
    /* 1 */ auto
    /* 2 */ auto
    /* 3 */ auto;
grid-template-rows:
    /* 4 */ auto
    /* 5 */ auto
    /* 6 */ auto;
    width: 200px;
}
#grid div {
    width: 50px;
    height: 50px;
    background-color: lightblue;
    margin: 3px;
}
.up { grid-column: 2; grid-row: 1; }
.ok { grid-column: 2; grid-row: 2; }
.down { grid-column: 2; grid-row: 3; }
.left { grid-column: 1; grid-row: 2; }
.right { grid-column: 3; grid-row: 2; }
<div id="grid">
  <div class="up">Up</div>
  <div class="left">left</div>
  <div class="ok">OK</div>
  <div class="right">right</div>
  <div class="down">down</div>
</div>

最新更新