gpt4 book ai didi

jquery - 我怎样才能使我的 jQuery LavaLamp 效果不那么毛刺

转载 作者:行者123 更新时间:2023-11-28 18:40:27 26 4
gpt4 key购买 nike

我正在开发一个 jQuery 函数来在我的导航栏上创建“lavalamp”效果。

目前,它以鼠标方式运行,除非您将鼠标悬停在某个元素(例如社区服务)上,然后将鼠标从导航栏移开。执行此操作时,#movingBox div 会按预期返回到 Home 项,但只有 #movingBox .left div 显示,其他两个“消失”。

我想做到这一点,这样就不会发生这种故障,这样我就可以在生产中实际使用它了。

HTML

 <div id="navArea">
<div id="navBar" class="noscript">
<ul class="parent">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">After Care</a></li>
<li><a href="#">Repair</a></li>
<li><a href="#">Store</a>
<ul class="sub">
<li><a href="#">Cat 1</a></li>
<li><a href="#">Cat 2</a></li>
<li><a href="#">Cat 3</a></li>
<li><a href="#">Cat 4</a></li>
</ul></li>
<li><a href="#">Events</a></li>
<li><a href="#">Community Service</a></li>
</ul>
<div id="movingBox">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
</div>
</div>

<div id="mainContent">
</div>

CSS

#navArea{
height: 48px;
width: 100%;
background-image: url(../img/navBG.png);
background-repeat: repeat-x;
font-size: 15px;
font-family: 'BPreplayBold', Helvetica, Arial, sans-serif;
}
#navBar {
margin-right: auto;
margin-left: auto;
position: relative;
width: 636px;
}
#navBar ul{
padding: 0;
margin: 0;
z-index: 20;
position: absolute;
}
#navBar ul li{
float: left;
list-style: none;
}
#navBar ul li a{
padding-left: 15px;
padding-right: 15px;
height: 45px;
display: block;
text-decoration: none;
text-align:center;
line-height: 45px;
color: #EBEBEB;
}
#navBar ul li ul li{
width: 222px;
float: none;
}
#navBar ul li ul li a{
padding: 0px 15px;
display:block;
height:25px;
line-height:25px;
background: url('../img/navBG.png');
background-repeat: repeat-x;
}
#navBar ul li ul li a:hover{
background: #2abcf2;
}

#navBar #movingBox {
height: 46px;
width: 70px;
left: 0;
top: 0;
z-index: 19;
position: absolute;
}
#navBar #movingBox .left {
background-image: url(../img/hBoxL.png);
float: left;
width: 7px;
height: 46px;
}
#navBar #movingBox .right {
float: left;
height: 46px;
width: 7px;
background-image: url(../img/hBoxR.png);
}
#navBar #movingBox .middle {
background-image: url(../img/hBoxM.png);
background-repeat: repeat-x;
height: 46px;
float: left;
width: 56px;
}

jQuery

<script type="text/javascript">
$(document).ready(function() {
$("#navBar").removeClass("noscript");
$("#navBar ul.sub").hide();
$("#navBar li").hover(function(){
$(this).find('ul.sub').slideToggle(150);
});
$("#navBar li").mouseover(function(){
hoverItemLeft = Math.round($(this).offset().left - $("#navBar").offset().left);
hoverItemWidth = $(this).width();
$("#movingBox").stop().animate({"left": hoverItemLeft, "width": hoverItemWidth}, 350, 'easeOutBack');
$("#movingBox .middle").stop().animate({"left": hoverItemLeft, "width": hoverItemWidth-17}, 350, 'easeOutBack');
});
$("#navBar").mouseleave(function(){
activeItemLeft = Math.round($("#navBar li.active").offset().left - $("#navBar").offset().left);
activeItemWidth = $("#navBar li.active").width();
$("#movingBox").stop().animate({"left": activeItemLeft, "width": activeItemWidth}, 350, 'easeOutBack');
$("#movingBox .middle").stop().animate({"left": hoverItemLeft, "width": hoverItemWidth-17}, 350, 'easeOutBack');
});
});
</script>

感谢您的帮助!

编辑:我犯了一个愚蠢的错误 :P。在我最后一次动画调用中,我无意中使用了 hoverItem 变量。但是,如果您正在寻找相同的功能,请随意使用我的代码,请记住修复它。

最佳答案

我认为问题出在你最后几行 javascript 代码中 - 我认为你的代码有点分散注意力。这里...

$("#movingBox .middle").stop().animate({"left": hoverItemLeft, "width": hoverItemWidth-17}, 350, 'easeOutBack');

在上面一行中,将'hoverItemWidth'更改为'activeItemWidth';

这是修复的 fiddle - http://jsfiddle.net/joplomacedo/TxYe2/

关于jquery - 我怎样才能使我的 jQuery LavaLamp 效果不那么毛刺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602372/

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