我正在设计一个包含两行名称的标题的网站。当用户将鼠标悬停在其中一个名称上时,特定的 div 需要出现在名称下方。此 div 将包含其他图像和链接,因此用户必须能够将鼠标从名称向下导航到 div。
为简单起见,我将名称的第一行称为“top”,关联的 div 称为“top-reveal”,将名称的底行称为“bottom”和“bottom-reveal”。(请参阅链接的 jsfiddle。)
“Top-reveal”和“bottom-reveal”需要出现在同一个地方,不能与上面的名字重叠。
我首先尝试使用直接的 CSS div:first-child,但我无法控制用户的“意图”。
然后我使用 hoverIntent 插件切换到 jQuery 方法:
var timeHover = 700;
$("[id^='top']").hoverIntent({
over: topRevealer,
timeout: timeHover,
out: topHider
});
$("[id^='bottom']").hoverIntent({
over: bottomRevealer,
timeout: timeHover,
out: bottomHider
});
function topRevealer() {
setTimeout(function () {
$('#bottom-reveal').hide(), $('#top-reveal').fadeIn();
}, timeHover);
}
function bottomRevealer() {
setTimeout(function () {
$('#top-reveal').hide(), $('#bottom-reveal').fadeIn();
}, timeHover);
}
function topHider() {
$('#top-reveal').hide()
}
function bottomHider() {
$('#bottom-reveal').hide()
}
我正在使用hoverIntent,因为我不知道如何使用 .hover() 进行超时。它可以工作,除了显示 div 淡出然后重新进入。我知道这是因为当鼠标从“Top”移动到“Top-Reveal”时它正在调用“TopHider”,然后在它进入时调用“TopRevealer” “Top-Reveal” div,但我不希望它进出。我还注意到它可以创建一个淡入淡出队列,我不知道如何创建各种错误捕获器。
摆弄我在哪里:http: //jsfiddle.net/UFZ6U/
正如你所看到的,它几乎就在那里,但我需要一些指导来进行最后的推动,甚至需要一些关于更好的 JavaScript 编码的技巧。我最近才开始在下载独立脚本之外使用 JavaScript,现在我已经多次碰壁了。我正在寻找最直接的答案,它不必是 jQuery 或纯 CSS,只需一个轻量级的工作解决方案即可。我也没有与 hoverIntent 结婚,但它帮助我走到了这一步。
我希望这是有道理的。
谢谢所有潜在的回答者。