【问题标题】:How to stop the overlay to cover the content and make it cover only the background?如何停止覆盖以覆盖内容并使其仅覆盖背景?
【发布时间】:2022-06-11 02:54:32
【问题描述】:

我使用::before 作为覆盖,但我面临一个问题,即覆盖覆盖所有卡片,包括内容(文本),但我只想覆盖卡片的背景。由于这个问题,我无法选择任何文本。

/* left-to-right effect box */
.ltr-effect {
    position: relative;
}
.ltr-effect::before {
    content: "";
    display: block;
    position: absolute;
    top: 0px;
    left: 0px;
    width: 0%;
    height: 100%;
    background-color:rgba(215, 227, 250, 0.53);
    transition: width 0.5s;
}
.ltr-effect:hover::before {
    width: 100%;
}

/* card */
.service-content-box {
    text-align: center;
    border: 2px solid rgb(208, 228, 228);
    background-color: #22beff;
    border-radius: 10px;
    padding: 30px;
    font-size: 1.3em;
    width: calc(90%/3);
    margin-right: 5%;
    position: relative;
}
/* content of services */
.service-content-box .service-title {
    text-transform: capitalize;
    margin-bottom: 10px;
    font-size: 2em;
}
.service-content-box .service-desribtion {
    line-height: 30px;
}
.service-content-box a {
    margin: 7px 0px;
    text-decoration: none;
    text-transform: capitalize;
}
 <section class="services">
  <div class="services-content">
    <div class="service-content-box ltr-effect">
      <i class="fa fa-solid fa-book-open"></i>
      <h4 class="service-title mg-b-10">fast reading</h4>
      <p class="service-desribtion">
          Lorem ipsum dolor sit amet, consectetur adipisicing elit. A fugiat, ea et iure similique nesciunt Et accusantium                              magni
      </p>
      <a href="#" class="read-more">learn more</a>
    </div>
    <div class="clear"></div>
  </div><!-- /.services-content -->
    </section><!-- /.services -->

【问题讨论】:

  • 是外观问题还是您无法再选择文本?为了能够选择文本,您只需将pointer-events: none 添加到::before 元素即可。
  • 不,我这么说是为了澄清这个想法。我希望覆盖停止影响内容,只影响父母的背景。

标签: html css


【解决方案1】:

您可以为卡片中不想用叠加层覆盖的元素设置position: relative; z-index: 1;

您需要 z-index 才能使它们出现在前面,并且您可能已经知道,z-index 仅适用于非静态位置。这就是我使用该相对位置的原因。

/* left-to-right effect box */
.ltr-effect {
  position: relative;
}
.ltr-effect::before {
  content: "";
  display: block;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 0%;
  height: 100%;
  background-color: rgba(215, 227, 250, 0.53);
  transition: width 0.5s;
}
.ltr-effect:hover::before {
  width: 100%;
}

/* card */
.service-content-box {
  text-align: center;
  border: 2px solid rgb(208, 228, 228);
  background-color: #22beff;
  border-radius: 10px;
  padding: 30px;
  font-size: 1.3em;
  width: calc(90% / 3);
  margin-right: 5%;
  position: relative;
}
/* content of services */
.service-content-box .service-title {
  text-transform: capitalize;
  margin-bottom: 10px;
  font-size: 2em;
  position:relative;
  z-index:1;
}
.service-content-box .service-desribtion {
  line-height: 30px;
  position:relative;
  z-index:1;
}
.service-content-box a {
  margin: 7px 0px;
  text-decoration: none;
  text-transform: capitalize;
  position:relative;
  z-index:1;
}
<section class="services">
  <div class="services-content">
    <div class="service-content-box ltr-effect">
      <i class="fa fa-solid fa-book-open"></i>
      <h4 class="service-title mg-b-10">fast reading</h4>
      <p class="service-desribtion">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. A fugiat, ea et iure similique nesciunt Et accusantium magni
      </p>
      <a href="#" class="read-more">learn more</a>
    </div>
    <div class="clear"></div>
  </div>
</section>

【讨论】:

  • 你能看这里吗:codepen.io/Kairm/pen/eYVPjoX。我没有使用position:relative, z-index: 3for intro-landing(content),虽然覆盖并没有影响它
  • 我没有看到任何覆盖。我只看到background-color
  • 哦!对不起,你现在可以看,我编辑了codepen.io/Kairm/pen/eYVPjoX
  • 非常感谢你,yousoumar!它是如此接近理解它。
  • 我在之前的评论中犯了一些错字。由于我无法编辑它,我将其删除并重新编写它。但似乎不再需要它了。很高兴我能帮上忙。而这个video 将为您提供更多帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多