如何使用 jquery 正确地交叉淡入淡出悬停文本

发布于 2024-11-10 00:14:01 字数 896 浏览 1 评论 0原文

http://jsfiddle.net/mplungjan/8wf5E/ (现在可以使用 - 使用 .hover() )

当将鼠标悬停在淡入淡出的 div 上时,以下内容显然会失败,因为这会触发鼠标移出和移入。我只需要实际文本淡入和淡出,包装 div 仅用于遏制和调试。首选没有position:absolute的解决方案

<div id="container">
  <div id="one" class="fade">One</div>
  <div id="two" class="fade">Two</div>
</div>   

$(document).ready(function() {
  $("#container").mouseover(function () {
    $("#one").fadeOut("slow");
    $("#two").fadeIn("slow");
  }).mouseout(function () {
    $("#two").fadeOut("slow");
    $("#one").fadeIn("slow");
  });;
}); 

div { margin:3px; width:80px; height:80px; float:left; }
div#container { width: 100px; height:100px; border:1px solid black}
div#one { position:absolute; border:1px solid red;}
div#two { position:absolute; border:1px solid green; display:none; }

http://jsfiddle.net/mplungjan/8wf5E/ (works now - using .hover() )

The following obviously fails when hovering over the fading divs since that triggers the mouseout and in. I only need the actual text to fade in and out, the wrapping divs are only for containment and debugging. A solution without position:absolute is preferred

<div id="container">
  <div id="one" class="fade">One</div>
  <div id="two" class="fade">Two</div>
</div>   

$(document).ready(function() {
  $("#container").mouseover(function () {
    $("#one").fadeOut("slow");
    $("#two").fadeIn("slow");
  }).mouseout(function () {
    $("#two").fadeOut("slow");
    $("#one").fadeIn("slow");
  });;
}); 

div { margin:3px; width:80px; height:80px; float:left; }
div#container { width: 100px; height:100px; border:1px solid black}
div#one { position:absolute; border:1px solid red;}
div#two { position:absolute; border:1px solid green; display:none; }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

关于从前 2024-11-17 00:14:01

我建议使用 hover 函数来实现这种功能...

$(document).ready(function() {
  $("#container").hover(
    function(e) { 
      $("#one").fadeOut("slow");
      $("#two").fadeIn("slow");
    },
    function(e) {
      $("#two").fadeOut("slow");
      $("#one").fadeIn("slow");      
    }
  );
});

修复了这个特定问题。

I would recommend using the hover function for this kind of functionality...

$(document).ready(function() {
  $("#container").hover(
    function(e) { 
      $("#one").fadeOut("slow");
      $("#two").fadeIn("slow");
    },
    function(e) {
      $("#two").fadeOut("slow");
      $("#one").fadeIn("slow");      
    }
  );
});

It fixes this particular problem.

金兰素衣 2024-11-17 00:14:01

使用 mouseleave() 代替 mouseout() 似乎更好。
请参阅此处

Using mouseleave() instead of mouseout() seems to be better.
See here.

记忆之渊 2024-11-17 00:14:01

我想你正在寻找这个 jQuery 代码:

$(document).ready(function() {
  $("#container").mouseenter(function () {
    $("#one").fadeOut("slow");
    $("#two").fadeIn("slow");
  }).mouseleave(function () {
    $("#two").fadeOut("slow");
    $("#one").fadeIn("slow");
  });;
});

编辑:你也可以使用一点 CSS3 魔法来做到这一点;)

div { margin:3px; width:80px; height:80px; float:left; }
div#container { width: 100px; height:100px; border:1px solid black}
div#one { position:absolute; border:1px solid red;-webkit-transition:opacity 0.5s ease-in-out;}
div#two { position:absolute; border:1px solid green; opacity:0;-webkit-transition:opacity 0.5s ease-in-out; }

div#container:hover #two{
 opacity:1;}
div#container:hover #one{
 opacity:0;}

=> http://jsfiddle.net/3WZKx/1/

I think you are looking for this jQuery code :

$(document).ready(function() {
  $("#container").mouseenter(function () {
    $("#one").fadeOut("slow");
    $("#two").fadeIn("slow");
  }).mouseleave(function () {
    $("#two").fadeOut("slow");
    $("#one").fadeIn("slow");
  });;
});

EDIT : You can also do it using a bit of CSS3 magic ;)

div { margin:3px; width:80px; height:80px; float:left; }
div#container { width: 100px; height:100px; border:1px solid black}
div#one { position:absolute; border:1px solid red;-webkit-transition:opacity 0.5s ease-in-out;}
div#two { position:absolute; border:1px solid green; opacity:0;-webkit-transition:opacity 0.5s ease-in-out; }

div#container:hover #two{
 opacity:1;}
div#container:hover #one{
 opacity:0;}

=> http://jsfiddle.net/3WZKx/1/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文