javascript - 从外部进入集合中的控件时如何淡入和淡出标签?

标签 javascript jquery css svg fade

我有一堆彩色区域,当我输入其中任何一个时,我希望文本淡出。当我离开彩色区域时,我希望文本淡入。这很容易。当我离开一个区域并进入相邻区域时,问题就出现了。

如果我只使用 toggleIn()toggleOut(),它可以工作,但是淡入淡出的效果会使文本出现然后再次消失,这看起来很愚蠢。

额外的问题是这些区域不能放置在单个支架中,因为它们不是矩形定位的(事实上,它是用 D3 绘制的基于 SVG 的饼图的一部分)。

我一直在测试一个外部变量来跟踪条目是从所有区域外部创建的,还是从该区域外部但在另一个相邻区域内部创建的)。没能完全解决。

如何在 this fiddle 中实现它?

$(".dragon")
  .on("mouseenter", function(target) {
    $("#indicator").fadeOut();
  })
  .on("mouseleave", function(target) {
    $("#indicator").fadeIn();
  });

最佳答案

fadeIn()fadeOut() 函数可以接受一个选项参数。其中一个选项是 queue。如果您在 fadeOut() 上将其设置为 false,那么它将中断淡入动画。在悬停目标之间移动时,您不会看到完整的不透明度文本。

$(".dragon")
  .on("mouseenter", function(target) {
    $("#indicator").fadeOut({queue: false});
  })
  .on("mouseleave", function(target) {
    $("#indicator").fadeIn();
  });
div {
  width: 200px;
  height: 200px;
  text-align: center;
}

.uno {
  background-color: blue;
}

.duo {
  background-color: yellow;
}

#indicator {
  color: red;
  font-family: Tahoma;
  font-size: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dragon uno"></div>
<div class="dragon duo"></div>

<div id="indicator"><hr>Enter the dragon!</div>

更新

jQuery 的 fadeIn()fadeOut() 函数似乎存在问题,它们会被快速连续发生的 mouseenter 和 mouseleave 事件弄糊涂。不过,直接切换到使用 animate() 函数似乎可以解决问题。

$(".dragon")
  .on("mouseenter", function(target) {
    $("#indicator").animate({opacity: 0}, {queue: false});
  })
  .on("mouseleave", function(target) {
    $("#indicator").animate({opacity: 1});
  });

$(".dragon")
  .on("mouseenter", function(target) {
    $("#indicator").animate({opacity: 0}, {queue: false});
  })
  .on("mouseleave", function(target) {
    $("#indicator").animate({opacity: 1});
  });
div {
  width: 200px;
  height: 200px;
  text-align: center;
}

.uno {
  background-color: blue;
}

.duo {
  background-color: yellow;
}

#indicator {
  color: red;
  font-family: Tahoma;
  font-size: 32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dragon uno"></div>
<div class="dragon duo"></div>

<div id="indicator"><hr>Enter the dragon!</div>

关于javascript - 从外部进入集合中的控件时如何淡入和淡出标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080618/

相关文章:

javascript - 如何在外部单击关闭此菜单?

javascript - 使用 Canvas 绘制单个像素

css - 从样式表中获取颜色属性

css - SCSS :nth-child mixin with array

javascript - `this` 在默认参数下如何工作?

javascript - CSS 一致性工具

javascript - HTTP 400 消息 POST 请求错误 - View 和序列化器代码设计不正确

javascript - Concat 两个数组,其中一个也是一个数组

html - 嵌套类的 CSS 选择器

jquery - 如何将页面(主体)的颜色设置为使用 AJAX 加载的元素的可变颜色?