mouseleave 函数fadeTo 初始值(返回)

Posted

技术标签:

【中文标题】mouseleave 函数fadeTo 初始值(返回)【英文标题】:mouseleave function fadeTo initial value (turn back) 【发布时间】:2012-01-04 07:03:54 【问题描述】:

我正在做一个后台播放器。当用户单击#play 按钮时,主菜单淡入0.1 以不妨碍视图。但他可以随时使用主菜单,只需将鼠标移到主菜单上并返回不透明度1。当他移开鼠标时,又变透明了。

当用户按下#pause 按钮时,主菜单的不透明度恢复为不透明。但是当他从主菜单中移开鼠标时,不透明度必须保持为 1。

基本上我有这个:

$("#play").click(function() 
    $("#menu").fadeTo('slow', 0.1);
    $(this).hide();
    $('#pause').show();
);

$("#pause").click(function() 
    $("#menu").fadeTo('slow', 1);
    $(this).hide();
    $('#play').show();
);

$("#menu").mouseenter(function() 
    $("#menu").fadeTo('slow', 1);
).mouseleave(function()
    $("#menu").fadeTo( // I want this back to the initial value, which can be 0.1 or 1 );
);

你可以看到它在这里工作: http://luisgustavoventura.com

请提出建议。

【问题讨论】:

【参考方案1】:

DEMO jsBin

你可以这样做:

var paused = true;

$("#play").click(function() 
  paused = false;
  $("#menu").fadeTo('slow', 0.1);
  $(this).hide();
  $('#pause').show();
);

$("#pause").click(function() 
  paused = true;
  $("#menu").fadeTo('slow', 1);
  $(this).hide();
  $('#play').show();
);

$("#menu").mouseenter(function() 
  if (paused)return;
  $("#menu").fadeTo('slow', 1);
  ).mouseleave(function()
  if (paused)return;
  $("#menu").fadeTo('slow', 0.1);
);

【讨论】:

【参考方案2】:

这样怎么样,只需将菜单的最终值写入一个变量,然后使用它来淡化菜单:

var menuopacity = 1;
$("#play").click(function() 
    menuopacity = 0.1;
    $("#menu").fadeTo('slow', menuopacity);
    $(this).hide();
    $('#pause').show();
);

$("#pause").click(function() 
    menuopacity = 1;
    $("#menu").fadeTo('slow', menuopacity);
    $(this).hide();
    $('#play').show();
);

$("#menu").mouseenter(function() 
    $("#menu").fadeTo('slow', 1);
).mouseleave(function()
    $("#menu").fadeTo('slow', menuopacity);
);

关于 cmets 的更新: 这是另一个使用菜单中的实际值的解决方案,但是当用户在菜单仍然淡出时重新进入菜单时,这可能容易出现运行时错误:

$("#play").click(function() 
    $("#menu").fadeTo('slow', 0.1);
    $(this).hide();
    $('#pause').show();
);

$("#pause").click(function() 
    $("#menu").fadeTo('slow', 1);
    $(this).hide();
    $('#play').show();
);

var menuopacity = 1;
$("#menu").hover(function() 
    menuopacity = $("#menu").css('opacity');
    $("#menu").fadeTo('slow', 1);
, function()
    $("#menu").fadeTo('slow', menuopacity);
);

【讨论】:

效果很好,我会使用你的解决方案。谢谢你。但是,jQuery 没有类似于 CSS 的属性 :hover?只需鼠标悬停即可更改样式,当您取出时,无需指定即可恢复默认样式? 不,你可以使用 .hover(in, out) 代替 mouseenter 和 mouseleave 但最终它只是另一种写法。

以上是关于mouseleave 函数fadeTo 初始值(返回)的主要内容,如果未能解决你的问题,请参考以下文章

构造函数

jQuery fadeTo() 方法

JS mouseenter -> 加速度值增加; mouseleave -> 减速值减小

jQuery效果-----fadeIn()fadeOut()fadeToggle()fadeTo()

关于excel中lookup函数,当要查找的值出现重复时,是按啥原则返加结果?

fadeTo 与 Jquery 在 Retina Macbook Pro 上的 Chrome 中不起作用