链接不适用于 Overlay

Links not working with Overlay

我有几个带有覆盖层的图块会变暗,并且在悬停时会出现一个标题:

.photo {
  position: relative;
  margin: 10px 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.photo img {
  width: 100%;
  vertical-align: top;
}
.photo:after,
.photo:before {
  position: absolute;
  opacity: 0;
  transition: all 1s;
  -webkit-transition: all 1s;
}
.photo:after {
  content: '\A';
 width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.4);
}
.photo:before {
  width: 100%;
  content: attr(data-content);
  color: $white;
  text-align: center;
  font-size: 200%;
  z-index: 1;
  padding: 4px 10px;
}
.photo:hover:after,
.photo:hover:before {
  opacity: 1;
}
<div class="wrap-photo">
  <div class="photo" data-content="Benefits">
    <a href="kb_view.do?sysparm_article=KB0010030">
      <img src="Wellness.jpg" alt="" width="100%" height="100%" />
    </a>
  </div>

  <div class="photo" data-content="Payroll">
    <a href="kb_view.do?sysparm_article=KB0010031">
      <img src="award.jpg" alt="" width="100%" height="100%" />
    </a>
  </div>

  <div class="photo" data-content="Training">
    <a href="#" target="_blank">
      <img src="Personnel.jpg" alt="" width="100%" height="100%" />
    </a>
  </div>
</div>

问题出在叠加效果上,它挡住了 link 并使其无法点击。我试过弄乱 z-indexes,但是当一个东西起作用时,另一个东西被阻止了。我希望叠加层和文本在悬停时有效,但也可以点击,这可能吗?

您可以将 :before 和 :after 选择器移动到 a 标记,然后修改 .photo a:before 使文本垂直居中。

.photo a:before {
  [...]
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  top: 50%;
}

.photo {
  position: relative;
  margin: 10px 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.photo img {
  width: 100%;
  vertical-align: top;
}

.photo a:after,
.photo a:before {
  position: absolute;
  opacity: 0;
  transition: all 1s;
  -webkit-transition: all 1s;
}

.photo a:after {
  content: '\A';
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.4);
}

.photo a:before {
  width: 100%;
  content: attr(data-content);
  color: $white;
  text-align: center;
  font-size: 200%;
  z-index: 1;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  top: 50%;
}

.photo a:hover:after,
.photo a:hover:before {
  opacity: 1;
}
<div class="wrap-photo">
  <div class="photo">
    <a href="kb_view.do?sysparm_article=KB0010030" data-content="Benefits">
      <img src="http://placehold.it/200x100" alt="" width="100%" height="100%" />
    </a>
  </div>

  <div class="photo">
    <a href="kb_view.do?sysparm_article=KB0010031" data-content="Payroll">
      <img src="http://placehold.it/200x100" alt="" width="100%" height="100%" />
    </a>
  </div>

  <div class="photo">
    <a href="#" target="_blank" data-content="Training">
      <img src="http://placehold.it/200x100" alt="" width="100%" height="100%" />
    </a>
  </div>
</div>