jquery - 为什么当光标在顶部时,悬停时出现的div开始闪烁?
问题描述
所以我有3个div。一个是父容器,在悬停时,其他 2 个容器应该出现在父容器的顶部。一个容器只是一些文本和黑色背景,另一个只是渐变黑色背景。
我遇到的问题是,当我将鼠标悬停在一个带有文本的子容器上时,它开始闪烁,我不知道为什么。
此外,由于某种原因,我的 codepen 中的子 div 出现在整个窗口上,而不仅仅是父 div。但主要问题是闪烁。
<div class="masonry-grid">
<div class="asset-container" style="border: 1px solid rgb(71, 71, 75); margin: 5px; padding: 5px; margin:auto; width:200px;display:block"">
<div class=" show-hover"></div>
<img src="https://images.unsplash.com/flagged/photo-1593005510329-8a4035a7238f?ixlib=rb-1.2.1&ixid=MXwxMjA3fDB8MHxleHBsb3JlLWZlZWR8Mnx8fGVufDB8fHw%3D&w=1000&q=80" class="img-responsive center-img" style="position: relative; width:200px;">
<div class="asset-title">
filename
size: 1mb
<br>
tag count: 1 Tag
<br>
uploaded: yesterday
</div>
<div class="masonry-footer"><span class="h5 card-title">description</span></div>
</div>
.asset-title{
display:none;
position:absolute;
top:20px;
left:-100px;
}
.show-hover:hover ~ .asset-title {
display:block;
left:0;
padding-left:13px;
margin-left:10px;
padding-right:8px;
padding-top:6px;
padding-bottom:5px;
z-index:30;
background-color: rgba(0,0,0,0.6);
}
.show-hover{
width:100%;
height:100%;
position: absolute;
z-index: 29;
top: 0;
left: 0;
background: linear-gradient(0deg, rgba(0,0,0,1) 32%, rgba(0,0,0,0.5284488795518207) 100%);
opacity:0;
}
.show-hover:hover{
opacity: 1;
left:0;
-webkit-transition: all .4s ease;
-moz-transition: all .4s ease;
-o-transition: all .4s ease;
-ms-transition: all .4s ease;
transition: all .4s ease;
}
解决方案
因为 '.show-hover' 和 '.asset-title' 是兄弟元素。
你把'.show-hover:hover ~.asset-title'和'.show-hover:hover'当鼠标悬停在'.asset-title'上时被取消。
发生这种情况时,“.asset-title”的显示变为无,“.show-hover:hover”被激活。
它看起来像在闪烁,因为它无限期地重复这个过程。
要解决此问题,我建议将悬停应用到父元素。
最后,如果你想把'position:absolute'元素放在父元素里面,你可以使用'position:relative'。
.asset-container {
position: relative;
}
.asset-title {
display: none;
position: absolute;
top: 20px;
padding-left: 13px;
margin-left: 10px;
padding-right: 8px;
padding-top: 6px;
padding-bottom: 5px;
z-index: 30;
background-color: rgba(0, 0, 0, 0.6);
}
.asset-container:hover .asset-title {
display: block;
}
.show-hover {
width: 100%;
height: 100%;
position: absolute;
z-index: 29;
top: 0;
left: 0;
background: linear-gradient(0deg, rgba(0, 0, 0, 1) 32%, rgba(0, 0, 0, 0.5284488795518207) 100%);
opacity: 0;
}
.asset-container:hover .show-hover {
opacity: 1;
-webkit-transition: all .4s ease;
-moz-transition: all .4s ease;
-o-transition: all .4s ease;
-ms-transition: all .4s ease;
transition: all .4s ease;
}
<div class="masonry-grid">
<div class="asset-container" style="border: 1px solid rgb(71, 71, 75); margin: 5px; padding: 5px; margin:auto; width:200px;display:block">
<div class=" show-hover"></div>
<img src="https://images.unsplash.com/flagged/photo-1593005510329-8a4035a7238f?ixlib=rb-1.2.1&ixid=MXwxMjA3fDB8MHxleHBsb3JlLWZlZWR8Mnx8fGVufDB8fHw%3D&w=1000&q=80" class="img-responsive center-img" style="position: relative; width:200px;">
<div class="asset-title">
filename
size: 1mb
<br>
tag count: 1 Tag
<br>
uploaded: yesterday
</div>
<div class="masonry-footer"><span class="h5 card-title">card title</span></div>
</div>
</div>
推荐阅读
- python - pathlib.Path.mkdir() 不会在指定路径创建目录
- python - 调用返回 FloatType() 的 UDF 时,“预期构造 ClassDict 的零参数(用于 numpy.dtype)”
- java - fastxml.jackson 在 Spring Boot 中解析错误的类
- c - C strcpy() 复制字符串文字而没有分段错误
- c# - 构建 C# 控制台应用程序时出现错误 CS0246
- spring-boot - 在 Oauth2 授权服务器中访问需要完整的身份验证
- java - 无法在for循环外打印变量
- javascript - 在 JavaScript 中真正保护数据成员(类/IIFE 变量)
- java - (Spring Boot + JWT)如何获得 JWT 响应?
- php - (Codeigniter)我可以使用带参数的默认控制器吗?