【问题标题】:Css make a grid with centered contentCss 制作一个内容居中的网格
【发布时间】:2018-09-19 04:04:43
【问题描述】:

我正在尝试为不干胶标签上的打印内容创建布局。 所以,我创建了 div 并使用display:grid; 来根据需要划分空间。 item1、item2 和 item3 应该相互重叠并在单元格中居中。

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: 70mm; // Seems useless
  align-items: center;
}

.cell {
  border-style: dashed;
  width: 100mm;
  height: 70mm;
  align-content: center;
}

.item1 {
  z-index: 0;
  width: 40mm;
  height: 40mm;
  background-color: red;
  position: relative;
}

.item2 {
  z-index: 1;
  width: 20mm;
  height: 20mm;
  background-color: blue;
  position: relative;
}

.item2 {
  z-index: 2;
  width: 10mm;
  height: 10mm;
  background-color: green;
  position: relative;
}
<div class="grid">
  <div class="cell">
    <div class="item1"></div>
    <div class="item2"></div>
    <img class="item3" src="./src.png" />

  </div>
  <div class="cell">
    <div class="item1"></div>
    <img class="item2" src="./src.png" />
    <div class="item3"></div>
  </div>
  <div class="cell">
    <div class="item1"></div>
    <img class="item2" src="./src.png" />
    <div class="item3"></div>
  </div>
</div>

我无法获得正确的结果:每个单元格中的项目水平和垂直居中的网格。单元格应具有精确的尺寸(100mmx70mm),每行 2 个单元格,因为要打印页面。

观众中有没有CSS 向导可以帮助我?

【问题讨论】:

    标签: html css css-grid


    【解决方案1】:

    您只需要absolute 定位和translate 基于百分比的转换。

    .grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 70mm; // Seems useless
      align-items: center;
    }
    
    .cell {
      border-style: dashed;
      width: 100mm;
      height: 70mm;
      align-content: center;
      position: relative;
    }
    
    .cell>*{
      position: absolute;
      left:50%;
      top: 50%;
      transform: translateX(-50%) translateY(-50%);
    }
    
    .item1 {
      z-index: 0;
      width: 40mm;
      height: 40mm;
      background-color: red;
    }
    
    .item2 {
      z-index: 1;
      width: 20mm;
      height: 20mm;
      background-color: blue;
    }
    
    .item2 {
      z-index: 2;
      width: 10mm;
      height: 10mm;
      background-color: green;
    }
    <div class="grid">
      <div class="cell">
        <div class="item1"></div>
        <div class="item2"></div>
        <img class="item3" src="./src.png" />
    
      </div>
      <div class="cell">
        <div class="item1"></div>
        <img class="item2" src="./src.png" />
        <div class="item3"></div>
      </div>
      <div class="cell">
        <div class="item1"></div>
        <img class="item2" src="./src.png" />
        <div class="item3"></div>
      </div>
    </div>

    【讨论】:

    • 您的意思是让您的第二个 item2 选择器成为 item3?
    • 这个解决方案对我来说真的很好。还有一些问题,比如由于某种原因,单元格的宽度是 70mm 而不是 100mm,并且 item1 是一个 img 到一个没有正确定位的 div 中,但这是朝着正确方向迈出的一大步!谢谢!
    • @serg Chernata : 对不起,这是我的错字,img 项目应该是所有单元格中的最后一个
    • @nimbusparis 真的没关系,它对解决方案没有影响。
    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 2019-07-19
    • 2022-01-21
    • 2023-03-10
    • 2011-10-11
    • 2020-04-03
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多