CSS 效果 :hover::after 在子元素上 :hover 在父元素上

Posted

技术标签:

【中文标题】CSS 效果 :hover::after 在子元素上 :hover 在父元素上【英文标题】:CSS effect :hover::after on child element on :hover on parent 【发布时间】:2021-09-23 08:13:43 【问题描述】:

当我将鼠标悬停在 div 上时,我很难在 div 的文本上获得 CSS 悬停效果。

当我将鼠标悬停在.card-about div 上时,我希望.mark-heading 标记文本通过:hover::after 效果加下划线。

.card-about::after 
  margin: auto;
  padding: 1px 0px;
  content: '';
  display: block;
  width: 0;
  height: 3px;
  background: #000000;
  transition: width 0.5s;


.card-about:hover::after 
  margin: auto;
  width: 100%;
  transition: width 0.3s;
<div class="card-about">
  <div class="justify-content-center d-flex">
    <img class="rounded-circle" src="delivery.png"   >
  </div>
  <h4 class="mark-heading">Free Delivery</h4>
  <div class="about-box-content d-block">Some text here</div>
</div>

【问题讨论】:

【参考方案1】:

如果您想将下划线应用到 .mark-heading 元素,只需更改 CSS 选择器以定位该元素而不是 .card-about

.mark-heading::after
  margin: auto;
  padding: 1px 0px;
  content: '';
  display: block;
  width: 0;
  height: 3px;
  background: #000000;
  transition: width 0.5s;


.card-about:hover .mark-heading::after 
  margin: auto;
  width: 100%;
  transition: width 0.3s;
<div class="card-about">
  <div class="justify-content-center d-flex">
    <img class="rounded-circle" src="delivery.png"   >
  </div>
  <h4 class="mark-heading">Free Delivery</h4>
  <div class="about-box-content d-block">Some text here</div>
</div>

【讨论】:

我想要它通过一个过渡效果。当我悬停时,它的宽度从 0% 扩展到 !00%。当我将鼠标从 div 中移出时,它会缩小到 0% 宽度。 这就是这段代码的作用,你可以在 sn-p 中看到【参考方案2】:

我不太明白你为什么需要:hover::after

添加以下行:

.card-about:hover .mark-heading 
  text-decoration: underline;

这会选择.mark-heading div .card-about 悬停时。

.card-about::after 
  margin: auto;
  padding: 1px 0px;
  content: '';
  display: block;
  width: 0;
  height: 3px;
  background: #000000;
  transition: width 0.5s;


.card-about:hover::after 
  margin: auto;
  width: 100%;
  transition: width 0.3s;


.card-about:hover .mark-heading 
  text-decoration: underline;
<div class="card-about">
  <div class="justify-content-center d-flex">
    <img class="rounded-circle" src="delivery.png"   >
  </div>
  <h4 class="mark-heading">Free Delivery</h4>
  <div class="about-box-content d-block">Some text here</div>
</div>

【讨论】:

我想要它通过过渡效果。当我悬停时,它的宽度从 0% 扩展到 !00%。当我从 div 鼠标移出时,它会缩小到 0% 宽度。

以上是关于CSS 效果 :hover::after 在子元素上 :hover 在父元素上的主要内容,如果未能解决你的问题,请参考以下文章

CSS 六边形边框hover闭合动画效果

动态改变伪元素样式的方(用:after和:before生成的元素)

如何将鼠标悬停在子元素上而不悬停在 CSS 中的父元素上?

常忽略的css技巧

关于CSS清除浮动的几种方法

在子元素中添加/删除类时的 CSS3 过渡动画