css 对齐div以从行的中心开始

monwx1rj  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(215)

我的意图是:

遗憾的是,除了边距之外,我不知道如何按照我想要的方式对齐。问题出在带按钮的行上。我想用id=“info”对齐div,使其从行的中心开始(id=“row”)。
这是当前状态和代码,如下所示。

<div class="d-flex align-items-center" id="row">

    <div class="radio-btn">
        
    </div>

    <div style="margin-left: 2em; margin-right: 2em; width: 50px;">
        <img src='xy.png' style="max-width: 100%; max-height: 100%;">
    </div>

    <div id="info">

        <div> SAMPLE TEXT </div>
        <div><button>SELECT PICKUP</button></div>

    </div>
</div>

由于我试图在for循环中生成多个这样的行,所以我不想用if / else语句来使事情复杂化。
有没有其他的方法来实现这一点,某种对齐选项,我不知道?或者我应该只使用边距的行与按钮?

tpxzln5u

tpxzln5u1#

这是你的问题的代码,你可以添加一些css。
结果截图:

检查下面的完整代码。我使用了**SVG而不是img**,因为它在当前代码中不起作用。

#row {
  display: flex;
  flex-direction: row;
  align-items: center;
}

#info {
  position: relative;
}

#info>div:last-child {
  position: absolute;
  width: max-content;
  margin-top: 5px;
}
<div class="d-flex align-items-center" id="row">

  <div class="radio-btn">
  </div>
  <div style="margin-left: 2em; margin-right: 2em; width: 50px;">
    <svg class="Icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 50px; width: 50px;"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" transform="translate(0,0)" style=""><path d="M256 24.585L51.47 118.989 256 213.394l204.53-94.405zM38.998 133.054v258.353L247 487.415V229.063zm434.004 0L265 229.062v258.353l208.002-96.008z" fill="#fff" fill-opacity="1"></path></g></svg>
  </div>

  <div id="info">
    <div> SAMPLE TEXT </div>
    <div><button>SELECT PICKUP</button></div>
  </div>
</div>
qojgxg4l

qojgxg4l2#

你可以使用网格。把网格做成一张"卡片"插入容器中。

.container {
  width: 500px;
}

.card {
  display: grid;
  grid-template-rows: 1fr 1fr;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  width: 100%;
  height: 100%;
}

#div1 {
  grid-area: 1 / 1 / 3 / 2;
  align-self: center;
  justify-self: center;
}

#div2 {
  grid-area: 1 / 2 / 3 / 3;
  align-self: center;
  justify-self: center;
}

#div3 {
  grid-area: 1 / 3 / 2 / 4;
  align-self: center;
  justify-self: center;
}

#div4 {
  grid-area: 2 / 3 / 3 / 4;
  align-self: center;
  justify-self: center;
}
<div class="container">
  <div class="card">
    <div id="div1">
      <input type="radio" id="radio" value="HTML">
    </div>
    <div id="div2">
      <svg id="logo-84" width="40" height="28" viewBox="0 0 40 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path class="ccustom" fill-rule="evenodd" clip-rule="evenodd" d="M9.98578 4.11462L0 14C1.99734 15.9773 4.27899 17.6437 6.76664 18.9474C7.45424 20.753 8.53203 22.4463 10 23.8995C15.5229 29.3668 24.4772 29.3668 30 23.8995C31.468 22.4463 32.5458 20.753 33.2334 18.9473C35.721 17.6437 38.0027 15.9773 40 14L30.0223 4.12266C30.0149 4.11527 30.0075 4.10788 30 4.1005C24.4772 -1.36683 15.5229 -1.36683 10 4.1005C9.99527 4.10521 9.99052 4.10991 9.98578 4.11462ZM29.0445 20.7309C26.1345 21.7031 23.0797 22.201 20 22.201C16.9203 22.201 13.8656 21.7031 10.9556 20.7309C11.2709 21.145 11.619 21.5424 12 21.9196C16.4183 26.2935 23.5817 26.2935 28 21.9196C28.381 21.5424 28.7292 21.145 29.0445 20.7309ZM12.2051 5.8824C12.9554 6.37311 13.7532 6.79302 14.588 7.13536C16.3038 7.83892 18.1428 8.20104 20 8.20104C21.8572 8.20104 23.6962 7.83892 25.412 7.13536C26.2468 6.79302 27.0446 6.3731 27.795 5.88238C23.4318 1.77253 16.5682 1.77254 12.2051 5.8824Z" fill="#3B4158"></path></svg>
    </div>
    <div id="div3">
      SAMPLE TEXT
    </div>
    <div id="div4">
      <button>SELECT PICKUP</button>
    </div>
  </div>
</div>

这里的网格有2行和3列。
第一格取2行和第一列。第二格取2行和2列。第三格取第三列上的第一行。第四格取第二行第三列。
每个div都是自对齐和自对齐居中的,如果你想改变div上的位置。如果你想这样,你可以直接在卡片网格定义中对齐和对齐。
如果需要,可以更改名称,并将div从id放到class中。

相关问题