仅将CSS伪元素添加到网格的中心

问题描述 投票:-1回答:2

.parnet{
  max-width: 600px;
  margin: 0 auto;
  background: #f4f4f5;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.cell {
  position: relative;
}

.inner {
  width: 80px;
  height: 80px;
  padding: 40px;
  text-align: left;
}

.wrapper .cell:nth-child(2n):before{
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 60%;
  width: 1px;
  background-color:red;
}
<div class="parnet">
  <div class="wrapper">
    <div class="cell">
      <div class="inner">1</div>
    </div>
    <div class="cell">
      <div class="inner">2</div>
    </div>
    <div class="cell">
      <div class="inner">3</div>
    </div>
    <div class="cell">
      <div class="inner">4</div>
    </div>
    <div class="cell">
      <div class="inner">5</div>
    </div>
    <div class="cell">
      <div class="inner">6</div>
    </div>
  </div>
</div>

我有一个网格,我正在尝试添加:在伪元素之前创建每个网格单元格之间的分隔线。我只希望分隔线显示在中心单元格而不是外部左右。我可以使用border-right然后使用nth-child(3n)来删除边框。但是在使用伪元素尝试做同样的事情时遇到了麻烦

enter image description here

.parent {
      background: white;
      max-width: 600px;
      margin: 0 auto;

      .wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);

        .cell {
          position: relative;

          &:before {
            content: "";
            position: absolute;
            left: 0;
            top: 50%;
            transform: translateY(-50%);
            height: 60%;
            width: 1px;
            background-color:red;
          }

          &:nth-child(3n):before {
            width: 0;
          }
         .inner {
           max-width: 320px;
           width: 320px;
           height: 200px;
           padding: 57px 43px 40px;
           text-align: left;
         }
        }
      }
    }
css
2个回答
0
投票

这是我的答案。我正在使用.cell:nth-child(3n):before作为水平线。我希望这就是你所需要的。

.parent {
  background: white;
  max-width: 600px;
  margin: 0 auto;
  font-size:2em;
}
.parent .wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.parent .wrapper .cell {
  position: relative;
}
.parent .wrapper .cell:before {
  content: "";
  position: absolute;
  right: 50%;
  top:.2em;
  height: 60%;
  width: 1px;
  background-color: red;
}
.parent .wrapper .cell:nth-child(3n):before {
  width: 300%;
  height:1px;
  top:100%
}
<div class="parent">
  <div class="wrapper">
  <div class="cell">1</div>
  <div class="cell">2</div>
  <div class="cell">3</div>
  <div class="cell">4</div>
  <div class="cell">5</div>
  <div class="cell">6</div>
  <div class="cell">7</div>
  <div class="cell">8</div>
  <div class="cell">9</div>
</div> 
</div>

1
投票

.parnet{
  max-width: 600px;
  margin: 0 auto;
  background: #f4f4f5;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

.cell {
  position: relative;
}

.inner {
  width: 80px;
  height: 80px;
  padding: 40px;
  text-align: left;
}

.wrapper .cell:before{
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 60%;
  width: 1px;
  background-color:red;
}

.wrapper .cell:nth-child(3n):before {
  width: 0;
}
<div class="parnet">
  <div class="wrapper">
    <div class="cell">
      <div class="inner">1</div>
    </div>
    <div class="cell">
      <div class="inner">2</div>
    </div>
    <div class="cell">
      <div class="inner">3</div>
    </div>
    <div class="cell">
      <div class="inner">4</div>
    </div>
    <div class="cell">
      <div class="inner">5</div>
    </div>
    <div class="cell">
      <div class="inner">6</div>
    </div>
  </div>
</div>

所以线索是正确的:0;在单元格而不是左边:0;然后使用

.wrapper .cell:nth-child(3n):before {
  width: 0;
}

谢谢基思,我会给你一个很好的线索,给你答案。

© www.soinside.com 2019 - 2024. All rights reserved.