gpt4 book ai didi

jquery - 基于导航栏淡入淡出 DIV

转载 作者:行者123 更新时间:2023-12-01 00:20:35 25 4
gpt4 key购买 nike

问候,

我正在尝试使用 jQuery 为导航栏上的每个按钮制作一个简单的淡入/淡出 DIV,其中包含文本,但我遇到了一些问题。这是我正在尝试执行的操作的屏幕截图:

Screenshot

基本上,当用户将鼠标悬停在导航栏上的某个项目上时,导航下方会出现一个 div,其中包含与该按钮相关的文本。到目前为止,我提出的标记非常可怕,我知道这不是正确的方法,我还尝试使用数组并使用导航按钮标题属性中的文本填充信息 div - 后者效果很好,但是然后还会出现一个标题。

除了过于复杂之外,它在某种程度上确实有效。如果用户快速将鼠标悬停在导航栏内外,则会导致整个内容闪烁(不使用 :hidden 和 :visible),或者如果使用 :hidden 和 :visible 则不会出现。

这是当前的标记:

信息 DIV 的 CSS

#header-info-text {
width: 480px;
text-align: right;
float: right;
margin-right: 20px;
padding-right: 25px;
background: url('/images/info-arrow.png') top right no-repeat transparent scroll;
color: #fff;
display: none;
}

导航 HTML

<div id="navBar">
<ul>
<li class="nav-first nav-active"><a href="#">Home</a></li>
<li id="navAbout"><a href="#">About</a></li>
<li id="navPort"><a href="#">Portfolio</a></li>
<li id="navServ"><a href="#">Services</a></li>
<li id="navBlog"><a href="#">Blog</a></li>
<li id="navContact" class="nav-last"><a href="#">Contact</a></li>
</ul>
</div>
<div id="header-infoDIV">
<span id="header-info-text"></span>
</div>

Javascript

$("#navBar ul li").hover(function() {
var text;
var id = $(this).attr('id');
if (id == 'navAbout') {
text = 'Learn more ..';
} else if (id == 'navPort') {
text = 'View our recent work and ongoing projects';
} else if (id == 'navServ') {
text = 'Learn about our services';
} else if (id == 'navBlog') {
text = 'View the our Blog';
} else if (id == 'navContact') {
text = 'We\'re looking forward to working with you!';
} else {
text = '';
}
$("#header-info-text").text(text);
$("#header-info-text:hidden").fadeIn('slow');
});
$("#navBar ul").hover(function() {
$("#header-info-text:hidden").fadeIn('slow');
}, function() {
$("#header-info-text:visible").delay(500).fadeOut('slow');
});

解决此类问题的最佳方法是什么?基本上,我想淡入信息文本的 DIV,当用户移动到另一个按钮时更改其文本,并在用户移出导航栏时隐藏它。

谢谢!

解决方案(感谢 jmans)

 $("#navBar ul").hover(function() {
$("#header-info-text").stop(true,true).fadeIn('slow');
}, function() {
$("#header-info-text").stop(true,true).delay(500).fadeOut('slow');
});

更新感谢 mVChr 的建议,代码已减少到几行。结合 jmans 提供的建议,它正在做我想要的事情:

$("#navBar ul li a").hover(function() {
var text = $(this).attr('rel');
$("#header-info-text").text(text);
$("#header-info-text").stop(true,true).fadeIn('slow');
},
function() {
$("#header-info-text").stop(true,true).delay(500).fadeOut('slow');
});

最佳答案

当悬停状态发生变化时,您可以尝试使用 stop() 方法来停止任何正在进行的动画:

        $("#navBar ul").hover(function() {
$("#header-info-text:hidden").stop(true,true).fadeIn('slow');
}, function() {
$("#header-info-text:visible").stop(true,true).fadeOut('slow');
});

以及其他动画调用。

关于jquery - 基于导航栏淡入淡出 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4743261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com