当前位置:  开发笔记 > 编程语言 > 正文

CSS悬停与JavaScript鼠标悬停

如何解决《CSS悬停与JavaScript鼠标悬停》经验,为你挑选了7个好方法。

有时候我可以选择使用CSS元素:hover或JavaScript onmouseover来控制页面上html元素的外观.考虑以下场景,其中div包装输入

当鼠标光标悬停在div上时,我希望输入改变背景颜色.CSS方法是



JavaScript的方法是

每种方法的优点和缺点是什么?CSS方法是否适用于大多数Web浏览器?JavaScript慢于css吗?



1> cletus..:

问题:悬停是IE6仅在链接上支持它.这些天我用jQuery做这种事情:

$("div input").hover(function() {
  $(this).addClass("blue");
}, function() {
  $(this).removeClass("blue");
});

使事情变得更容易.这适用于IE6,FF,Chrome和Safari.



2> Ólafur Waage..:

CSS一个更易于维护和阅读.


它是可维护的,直到您必须在非元素上支持IE6.然后这是一个痛苦,因为你必须使用JS-hack.但CSS仍然是我的首选方式.让使用1999浏览器的人们拥有1999年的经验.
人们应该更新这是最好的解决方案...我建议添加一个检测浏览器的标签,并告诉他们如果使用IE <7则更新

3> kingjeffrey..:

为什么不兼得?使用jQuery作为动画效果和CSS作为后备.这为您提供了优雅降级的jQuery的好处.

CSS:

a {color: blue;}
a:hover {color: red;}

jQuery(使用jQueryUI为颜色设置动画):

$('a').hover( 
  function() {
    $(this)
      .css('color','blue')
      .animate({'color': 'red'}, 400);
  },
  function() {
    $(this)
      .animate({'color': 'blue'}, 400);
  }
);

演示



4> Shaun Mahood..:

在javascript中执行此操作的另一个好处是,您可以在不同的时间点添加/删除悬停效果 - 例如,将鼠标悬停在表格行上更改颜色,单击禁用悬停效果并开始编辑就地模式.



5> Alan..:

编辑:这个答案不再成立.CSS得到了很好的支持,Javascript(读取:JScript)现在几乎都需要任何Web体验,很少有人禁用javascript.

最初的答案,正如我在2009年的意见.

脱离我的头顶:

使用CSS,您可能会遇到浏览器支持问题.

使用JScript,人们可以禁用jscript(这就是我所做的).

我相信首选方法是使用HTML,使用CSS布局以及JScript中的任何动态内容.所以在这个例子中,你可能想要采用CSS方法.


因为这是一个安全风险,并且有太多网站滥用javascript.我使用一个名为"NoScript"的漂亮的firefox插件,它有选择地允许你只启用你想要的网站的脚本.
为什么要禁用JavaScript?您喜欢千年前的经历吗?

6> thismax..:

在两者之间要记住另一个区别.使用CSS,当鼠标离开元素时,:hover状态始终处于停用状态.但是,使用JavaScript时,onmouseout当鼠标从元素移动到浏览器镶边而不是页面的其余部分时,不会触发事件.

这种情况比您想象的更频繁,尤其是当您使用自定义悬停状态在页面顶部创建导航栏时.



7> Kunal..:

一个非常大的区别是当鼠标移出元素时,":悬停"状态会自动停用.因此,在悬停时应用的任何样式都会自动反转.另一方面,使用javascript方法,您必须定义"onmouseover"和"onmouseout"事件.如果您只定义"onmouseover",则除非您已明确定义"onmouseout",否则即使在鼠标移出后,"onmouseover"应用的样式也会保留.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有