在 ::before 伪元素上使用 CSS 过渡
Using CSS transition on ::before pseudo element
.posts .img-hover:before {
content: '';
display: block;
opacity: 0;
-webkit-transition: opacity 1.2s ease;
-moz-transition: opacity 1.2s ease;
-ms-transition: opacity 1.2s ease;
-o-transition: opacity 1.2s ease;
transition: opacity 1.2s ease-out;
}
.posts .img-hover:hover:before {
content: '';
display: block;
background: url("img/Texture1.png");
width: 320px;
/* image width */
height: 220px;
/* image height */
position: absolute;
top: 13px;
right: 2px;
opacity: 1;
}
<div class="posts">
<a href="#">
<h2 class="postname">
Travel Flashback #1 </h2>
</a>
<a class="img-hover" href="#">
<img width="960" height="720" src="http://.." class="img-hover" alt="" />
</a>
</div>
这段代码有一个问题。如您所见,我想过渡到具有 bkg img.
的伪元素 ::before
当我悬停时,过渡很顺利,但是当我离开鼠标时,bkg img 立即消失,没有过渡。
你能给些建议吗?
悬停时,您可能只需要与过渡相关的 css,而不是伪元素的实际样式。试试这个
.posts .img-hover:before {
content: '';
display: block;
background: url("img/Texture1.png");
width: 320px; /* image width */
height: 220px; /* image height */
position: absolute;
top: 13px;
right: 2px;
opacity: 0;
-webkit-transition: opacity 1.2s ease;
-moz-transition: opacity 1.2s ease;
-ms-transition: opacity 1.2s ease;
-o-transition: opacity 1.2s ease;
transition: opacity 1.2s ease-out;
}
.posts .img-hover:hover:before{
opacity: 1;
}
对于浏览此论坛的其他人,我来到这个线程时遇到了完全相同的问题,我试图从
切换过渡焦点
opacity 0.35s ease-in-out
至:
all 0.35s ease-in-out
问题已解决。
我的浏览器是 Chromium 版本 80.0.3987.162,Debian Linux 10.4
.posts .img-hover:before {
content: '';
display: block;
opacity: 0;
-webkit-transition: opacity 1.2s ease;
-moz-transition: opacity 1.2s ease;
-ms-transition: opacity 1.2s ease;
-o-transition: opacity 1.2s ease;
transition: opacity 1.2s ease-out;
}
.posts .img-hover:hover:before {
content: '';
display: block;
background: url("img/Texture1.png");
width: 320px;
/* image width */
height: 220px;
/* image height */
position: absolute;
top: 13px;
right: 2px;
opacity: 1;
}
<div class="posts">
<a href="#">
<h2 class="postname">
Travel Flashback #1 </h2>
</a>
<a class="img-hover" href="#">
<img width="960" height="720" src="http://.." class="img-hover" alt="" />
</a>
</div>
这段代码有一个问题。如您所见,我想过渡到具有 bkg img.
的伪元素 ::before当我悬停时,过渡很顺利,但是当我离开鼠标时,bkg img 立即消失,没有过渡。
你能给些建议吗?
悬停时,您可能只需要与过渡相关的 css,而不是伪元素的实际样式。试试这个
.posts .img-hover:before {
content: '';
display: block;
background: url("img/Texture1.png");
width: 320px; /* image width */
height: 220px; /* image height */
position: absolute;
top: 13px;
right: 2px;
opacity: 0;
-webkit-transition: opacity 1.2s ease;
-moz-transition: opacity 1.2s ease;
-ms-transition: opacity 1.2s ease;
-o-transition: opacity 1.2s ease;
transition: opacity 1.2s ease-out;
}
.posts .img-hover:hover:before{
opacity: 1;
}
对于浏览此论坛的其他人,我来到这个线程时遇到了完全相同的问题,我试图从
切换过渡焦点opacity 0.35s ease-in-out
至:
all 0.35s ease-in-out
问题已解决。 我的浏览器是 Chromium 版本 80.0.3987.162,Debian Linux 10.4