【问题标题】:How to properly crossfade text on hover with jquery如何使用 jquery 在悬停时正确交叉淡化文本
【发布时间】:2011-05-25 17:23:58
【问题描述】:

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

将鼠标悬停在淡入淡出的 div 上时显然会失败,因为这会触发鼠标移出和移入。我只需要实际的文本淡入和淡出,包装 div 仅用于包含和调试。没有位置的解决方案:绝对是首选

<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; }

【问题讨论】:

  • @Joshua - 不完全是。第一个解决方案在淡出之后淡入,下一个解决方案很好地交叉淡入淡出,但不是在悬停时,只需使用间隔

标签: jquery hover mouseover


【解决方案1】:

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

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

fixes 这个特殊问题。

【讨论】:

  • Okee,这就是我看着并解雇的。但这是更好的解决方案
【解决方案2】:

使用mouseleave() 而不是mouseout() 似乎更好。
here

【讨论】:

  • 见@Jibou 的建议。作品。谢谢
【解决方案3】:

我想你正在寻找这个 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/

【讨论】:

  • 我就是这样。谢谢
  • 我不知道怎么做!你可以在 CSS 上不使用 position:absolute 但是你需要用 jQuery 来设置它,我很确定你不应该那样做 ;) => jsfiddle.net/3WZKx/2
  • CSS 没有褪色(我认为在 HTML5 中可以),但感谢您的提示。我改变了我的接受,因为 .hover 感觉正确。
  • 啊 - 不,我的意思不是没有声明绝对值,我的意思是淡化 div 中的一些文本,其中文本只是在没有定位的情况下被替换
猜你喜欢
  • 1970-01-01
  • 2010-10-24
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多