首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何触发多个悬停操作/事件?

如何触发多个悬停操作/事件?
EN

Stack Overflow用户
提问于 2014-07-20 19:53:16
回答 2查看 1.9K关注 0票数 1

我这里有5个盒子,当我从一端悬停到另一端时,盒子会改变颜色,转换延迟是6s,所以动画速度很慢。

如何触发多个悬停事件,

当我将鼠标移动到div上时,它应该会触发它的悬停事件。

当我从左向右移动鼠标时,所有div的悬停事件都应该运行。

在我的代码中,首先触发第一个悬停效果,然后等待事件结束,然后在指针下面的其他div上启动下一个悬停效果。

代码语言:javascript
复制
.box{
  display: inline-block;
  height: 50px;
  width: 50px;
  background-color: #000;
  color: #fff;
  -webkit-transition: .6s 0s;
  text-align:center;
}

#box-1:hover{background-color: #C8F608;}
#box-2:hover{background-color: #23DC07;}
#box-3:hover{background-color: #07D7D7;}
#box-4:hover{background-color: #076BD7;}
#box-5:hover{background-color: #1307D7;}
代码语言:javascript
复制
<div class="container">
  <div class="box" id="box-1">bx1</div>
  <div class="box" id="box-2">bx2</div>
  <div class="box" id="box-3">bx3</div>
  <div class="box" id="box-4">bx4</div>
  <div class="box" id="box-5">bx5</div>
</div>

这是我的小提琴

(谢谢你的帮助:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-20 20:02:41

当您离开元素时,在:hover中指示的:hover不再适用。所以元素会回到它未悬浮的状态。如果仅依赖于:hover,则无法防止这种情况发生。

相反,您可以在悬停时添加一个类,这样效果将保持不变。

Demohttp://jsfiddle.net/LYT8J/3/

CSS

代码语言:javascript
复制
#box-1:hover, #box-1.hovered {background-color: #C8F608;}
#box-2:hover, #box-2.hovered {background-color: #23DC07;}
#box-3:hover, #box-3.hovered {background-color: #07D7D7;}
#box-4:hover, #box-4.hovered {background-color: #076BD7;}
#box-5:hover, #box-5.hovered {background-color: #1307D7;}

JavaScript

代码语言:javascript
复制
$('.box').mouseover(function() {
    $(this).addClass('hovered');
});
$('.container').mouseleave(function() {
    $(this).find('.hovered').removeClass('hovered');
});
票数 2
EN

Stack Overflow用户

发布于 2014-07-20 20:08:28

您希望所有的div标记在悬停时触发悬停效果,对吗?

如果是这样的话,您可以使用jQuery来解决这个问题。

代码语言:javascript
复制
$(document).ready(function() {
  $("div[id^='box-']").mouseenter(function() {
    $("#box-1").css("background-color", "#C8F608");
    $("#box-2").css("background-color", "#23DC07");
    $("#box-3").css("background-color", "#07D7D7");
    $("#box-4").css("background-color", "#076BD7");
    $("#box-5").css("background-color", "#1307D7");
  });

  $("div[id^='box-']").mouseleave(function() {
    $("#box-1").css("background-color", "#EEEEEE");
    $("#box-2").css("background-color", "#EEEEEE");
    $("#box-3").css("background-color", "#EEEEEE");
    $("#box-4").css("background-color", "#EEEEEE");
    $("#box-5").css("background-color", "#EEEEEE");
  });
});

这应该能做你想做的。当您输入以div开头的id标记时,它将触发该mouseenter事件,以单独更改每个divbackground-colormouseleave事件将将背景色还原为原来的background-color。你没有列出原色,所以我只是说#EEEEEE是浅灰色。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24854301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档