当鼠标悬停在父元素上时,我需要显示一个div(默认情况下子div是隐藏的)。这只能用JavaScript来实现吗?谢谢。
当鼠标悬停在父元素上时,我需要显示一个div(默认情况下子div是隐藏的)。这只能用JavaScript来实现吗?谢谢。
无需 JavaScript。
.hidden {
display: none;
}
.parent:hover .hidden {
display: block;
}
<div class="parent">
<p>Hello, I'm a child...</p>
<p class="hidden">..and so am I but I'm hidden.</p>
</div>
@jdln; 是的
CSS:
.outer {
background:red;
height:100px;
}
.box1 {
background:blue;
height:100px;
width:80px;
display:none;
}
.outer:hover .box1{
display:block;
cursor:pointer;
}
$("#some_parent").hover(function ()
{
$(this).children("#some_child_div").show();
});
opacity
,这样布局在悬停时不会跳动(这还允许动画出现):.show-on-hover-parent:hover .show-on-hover-item {
opacity: 1;
//transition: opacity .5s; //<- optional opacity animation
}
.show-on-hover-parent .show-on-hover-item {
opacity: 0;
//transition: opacity .5s; //<- optional opacity animation
}
html:
<div class="show-on-hover-parent">
<div>Always visible 1</div>
<div class="show-on-hover-item">visible on hover</div>
<div>Always visible 2</div>
</div>
我最初使用了上面的CSS解决方案,但是由于我的子div包含一个图像,导致鼠标悬停时出现闪烁,所以不得不使用jQuery。在这里,我们在鼠标进入时显示子元素(如果是桌面屏幕大小),并在鼠标离开时隐藏它,但仅在现在未悬停在主页面容器上时才隐藏,以最小化闪烁:
$(document).ready(function () {
$(".parent-qtip").mouseenter(function () {
if ($(window).width()>=1200)
$(this).children(".child-qtip").show();
});
$(".parent-qtip").mouseleave(function () {
if ($('.page-content').find('.container:hover').length)
$('.child-qtip').hide();
});
});
在找到这些答案之前,我真的遇到了很大的麻烦。参考了Marcel的方法后,我终于让它正常工作了。
我的解决方案如下。
.sidenav {
position: fixed;
height: 100%;
background-color: purple;
font-size: x-large;
z-index: 1;
top: 0;
left: 0;
padding: 0px;
}
.nav-item {
color: white;
text-decoration: none;
display: block;
border-radius: 10px;
margin: 5px;
padding: 10px 5px;
border: 1px transparent solid;
}
.nav-item:hover {
background-color: orchid;
}
.nav-icon {
vertical-align: middle;
}
.nav-item-title {
margin: 0 10px;
position: relative;
top: 2px;
}
.fa-circle-question {
position: relative;
left: 2px;
}
.hidden {
display: none;
}
.sidenav:hover .hidden {
display: inline-block;
}
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.0/css/all.min.css"
/>
<nav class="sidenav">
<div class="nav-item">
<i class="nav-icon fa-solid fa-arrow-right-to-bracket"></i>
<h5 class="nav-item-title hidden">
Medium string
</h5>
</div>
<div class="nav-item">
<i class="nav-icon fa-solid fa-house"></i>
<h5 class="nav-item-title hidden">
Short
</h5>
</div>
<div class="nav-item">
<i class="nav-icon fa-solid fa-circle-question"></i>
<h5 class="nav-item-title hidden">
Much much longer string
</h5>
</div>
</nav>