我们有一个菜单,使用<ul>
显示菜单(请参阅代码销)。当.one
类设置为position: absolute
时,当我们移动鼠标时,不再显示该类的元素。
当父项(.one
元素)具有<li>
处于活动状态时,如何使:hover
显示在菜单下方?
我们还尝试将top:85px
切换为padding-top: 85px
,我们发现当子元素具有背景色时,会添加很多填充。
预期行为:
<div class="one">
在下方应与容器的左侧对齐。 <div class="one">
在下方应与容器的左侧对齐。 position: absolute
类中的.one
属性。当前问题:
所需结果:
<div class="one">
将显示在first
,second
或third
菜单链接的下方。 使用@Ruzihm提供的解决方案,我能够提出此解决方案(codepin),在其中添加了<div class="menu__wrapper">
,然后使用padding-top
来获得所需的内容。
答案 0 :(得分:2)
悬停停止的原因是在#one
li
s下方有一个没有悬停空间的空隙。将.one {top:85px;}
更改为.one {padding-top:15px;}
或适当的数量以允许将某些内容悬停在上面。
此外,如果您想微调距填充开始处的距离,请使用padding-top
和top
的组合,例如.one{padding-top:25px;top:60px}
,以便下拉内容从顶部开始85px。
$(function() {
$('li#one').hover(function() {
var el_two = $(this);
var el_id = el_two.attr('id');
var el_link = el_two.attr('data-at');
var el_sel = '#' + el_link + '.' + el_id;
$(el_sel).toggleClass('is-active');
});
});
.menu__container {
margin: 0 auto;
padding: 10px;
}
.two {
display: none;
}
.is-active {
display: block;
}
.one {
display: none;
top: 60px;
padding-top: 25px;
position: absolute;
background: #777;
}
li#one>a {
padding: 10px;
background-color: #eee;
}
.menu__first {
background-color: #eee;
}
#one:hover>div.one {
display: block;
}
#one {
float: left;
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu__container">
<ul class="menu__first">
<li id="one">
<a href="#"> first</a>
<div class="one">
<ul>
<li data-at="some-link" id="two">
<a href="#"> some</a>
</li>
<li data-at="path-link" id="two">
<a href="#"> path</a>
</li>
<li data-at="another-one" id="two">
<a href="#"> another one</a>
</li>
</ul>
<div class="dropdown">
<div class="two" id="some-link">some link text</div>
<div class="two" id="path-link">path link</div>
<div class="two" id="another-one">another one</div>
</div>
</div>
</li>
<li id="one">
<a href="#"> second</a>
<div class="one">
<ul>
<li>
<a href="#"> another some</a>
</li>
<li>
<a href="#"> another path</a>
</li>
</ul>
</div>
</li>
<li id="one">
<a href="#"> third</a>
<div class="one">
<ul>
<li>
<a href="#"> third some</a>
</li>
<li>
<a href="#"> third path</a>
</li>
</ul>
</div>
</li>
</ul>
</div>
答案 1 :(得分:0)
这是最简单的方法。
考虑以下HTML:
<div classname="parent">
<div classname="child">...</div>
</div>
与此CSS结合:
.parent { ... }
.child { display: none; ... }
.parent:hover .child { display: block; ... }
display: block
都可以将其隐藏在视图中。display: block
,将显示该子。 / li>
在这里,我们使用display
属性和值block
和none
,但是您可以使用任何先隐藏然后显示元素的CSS规则。一些示例属性:block
,visibility
,opacity
。