将鼠标移到框中时淡入背景

时间:2012-05-10 11:33:37

标签: javascript jquery jquery-ui mouseover fade

我以前曾问过这个猜测。但现在我会尝试更具体一点。

当你将鼠标放在一个盒子上时,我试图让背景淡入淡出。我尝试了两种不同的选择。

选项1: Box1是它的鼠标盒子,而hover1是进入的新背景。这实际上效果很好。然而,它加载了acript,意思是,如果我只是用鼠标在盒子上发疯,那么即使我的鼠标静止不动,淡出也会持续不断。有没有办法可以阻止它? 内容是鼠标悬停时在内容框中更改的文本。这很有效。

$("#box1").mouseover(function(){
    $("#background").switchClass("nohover", "hover1", 500);
    $("#content").html(box1);

});

$("#box1").mouseout(function(){
    $("#background").switchClass("hover1", "nohover", 150);
    $("#content").html(content);

});

选项2: 在这里,我添加了类hover2并要求fadeín和fadeout。但这根本不起作用。有时候,当我拿出盒子的鼠标时,它甚至会移除侧面的所有东西。

$("#box2").mouseover(function(){
    $("#background").addClass("hover2").fadeIn("slow") 
    $("#content").html(box3);
});

$("#box2").mouseout(function(){
    $("#background").removeClass("hover2").fadeOut("slow")
    $("#content").html(content);
});

我使用jquery ui。 我真的希望有人可以帮助我!

2 个答案:

答案 0 :(得分:1)

您还可以尝试在标记/ CSS中进行少量更改。

HTML:

<div id="box">
    <div id="background"></div>
    <div id="content"></div>
</div>

CSS:

#box {
    position: relative;
    /* ... */
}
#background {
    position: absolute;
    display: none;
    top: 0;
    left: 0;
    width: inherit;
    height: inherit;
    background-image: url(...);
    z-index: -1;
}​

JavaScript的:

$("#box").hover(function() {
    $("#background").fadeIn();
}, function() {
    $("#background").stop().fadeOut();
});​

DEMO: http://jsfiddle.net/bRfMy/

答案 1 :(得分:0)

尝试添加变量以仅在该变量具有特定值时控制效果的执行。并在效果执行时修改其值。

这样的事情:

var goeft = 0;
$("#box1").mouseover(function(){
  if(goeft == 0) {
    $("#background").switchClass("nohover", "hover1", 500);
    $("#content").html(box1);
    goeft = 1;
  }
});

$("#box1").mouseout(function(){
    $("#background").switchClass("hover1", "nohover", 150);
    $("#content").html(content);
    // sets its value back to 0 if you want the next mouseover execute the effect again
    goeft = 0;
});