【问题标题】:Is it possible to make DIV active by hovering instead of clicking?是否可以通过悬停而不是单击来激活 DIV?
【发布时间】:2013-03-10 22:08:29
【问题描述】:

所以,这里有一个例子:我们有 50x50 像素大小的 DIV,它有黑色边框和白色背景。当您将鼠标悬停在 div 上时,它会将其背景颜色更改为红色。

现在的问题是:当您在 DIV 上悬停一次时,即使您将鼠标移开,如何使它的背景颜色保持红色?

换句话说,如何通过悬停而不是单击来激活 DIV?

编辑:Javascript 也很好,如果可能,跨平台解决方案将是首选。

【问题讨论】:

  • 这样的更改需要javascript - 这是一个选项吗?
  • 是的,已编辑原始帖子。

标签: javascript html css hover


【解决方案1】:

CSS 解决方案不适用于所有浏览器,因此您应该使用 JavaScript。正如另一个答案所暗示的那样,最好不要使用 DOM Level 0 事件来执行此操作,最佳实践是向您的 div 添加一个您的 CSS 可以设置样式的类。您可以使用 jQuery 并执行以下操作:

$(function(){    
    $('#myDiv').on('mouseenter', function(){
        $(this).addClass('active');
    });
});

然后设置样式:

#myDiv.active {
    background: red;
}

这将页面的结构、样式和功能分开,使其更易于维护。它还可以轻松地将相同的功能添加到页面上的其他元素。

【讨论】:

  • “CSS 解决方案不能在所有浏览器中工作,所以你应该使用 JavaScript”——这是一条愚蠢的规则。它可能适用于您关心的所有浏览器。突出显示 <div> 只能略微被视为“功能”(由 OP 来决定是否是),只要它很吸引人,我认为没有理由不让旧浏览器降级为没有它。
  • 我支持我们应该开发适用于所有浏览器的东西的想法,但是直到什么时候我们总是会因为 IE6 而受到限制? IE6 或 7 仅在 Windows XP 上可用,即使微软停止或将停止支持它,我们是否会一直问自己这是否适用于 IE6?即使是主要网站(Facebook、Google)也几乎无法在 IE6 上运行。 (我仍在使用 Windows xp :P)
  • 我认为很难证明支持 IE9 过于激进。
  • 您的方法看起来不错,但无论出于何种原因,我都无法让它发挥作用。我的 jQuery 库应该没问题。编辑:在 jsFiddle (jsfiddle.net/7eC3Z) 上也不起作用,或者我只是做错了什么。
  • 对不起!事件应该是“mouseenter”,而不是“hover”。
【解决方案2】:

你应该这样做:

   <div id="content" onmouseover="this.style.backgroundColor='red';"  > Testing div ... </div>

这是jsfiddle 来测试它。

【讨论】:

  • 很好,我将如何从 CSS 文件中加载样式?
【解决方案3】:

对于纯 CSS 解决方案,您需要使用过渡。

div
{
     background:white;
     -webkit-transition:background 0s;
     -webkit-transition-delay:999999s;
     -moz-transition:background 0s;
     -moz-transition-delay:999999s;
     transition:background 0s;
     transition-delay:999999s;
}
div:hover
{
     background:red;
     -webkit-transition-delay:0s;
     -moz-transition-delay:0s;
     transition-delay:0s;
}

它会立即变成红色0s,但需要999999s 变成白色,这太多了(你可以增加它),我敢肯定有人不会让页面打开几个小时或几天...

【讨论】:

  • 不错的 hack,虽然我觉得供应商前缀属性有点弄乱了代码示例。就我个人而言,我会将它们排除在外,并依靠阅读者对 CSS 的当前状态有足够的了解来处理它们。
  • 但请记住,过渡仅适用于某些现代浏览器。用户是否在寻找“全浏览器”解决方案?
  • @blachawk 看到 OP 没有表达这样的限制,这个答案仍然完全有效。
  • 最近我厌倦了 Javascipt,知道如果禁用 Javascript 将无法正常工作,这让我抓狂,所以我倾向于将 CSS 用于视觉效果,并尽可能少地使用 Javascript。 CSS3 太棒了!
  • @AliBassam 公平地说,解雇坚持使用旧版浏览器的用户和坚持禁用 JS 的用户一样公平。 (这一点对于引人注目的功能尤其没有实际意义。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2013-10-19
  • 2021-01-08
  • 2011-10-16
  • 1970-01-01
相关资源
最近更新 更多