有时候,我可以选择使用CSS元素:悬停或JavaScript onmouseover来控制页面上html元素的外观。考虑下面的情况,其中一个div包装输入CSS悬停与JavaScript mouseover
<div>
<input id="input">
</div>
我希望输入更改背景颜色,当鼠标光标悬停在div上。 CSS的方法是
<style>
input {background-color:White;}
div:hover input {background-color:Blue;}
</style>
<div><input></div>
JavaScript的方法是
<div onmouseover="document.getElementById('input').style.backgroundColor='Blue';">
<input id="input">
</div>
什么是每一种方法的优点和缺点? CSS方法在大多数Web浏览器中都能正常工作吗? JavaScript比css慢吗?
“javascript比css慢吗?”您不会注意到它,但是如果许多其他脚本同时运行(特别是对于手持设备,移动网站而言),JavaScript将消耗更多资源,并且可能会降低速度,并且这不是它应该使用的。另一方面,CSS使用更少的资源,并且完全是为了演示。您应该只使用JavaScript来增强网站导航和功能,但对于未启用js的用户应该仍然可以导航。我建议使用CSS:悬停方法。 – 2011-07-18 15:24:59
这是一个古老的问题,所以上述评论不再有效并不奇怪,而且可能永远不会有效。其中一个原因是缺乏可提供高性能样板的JS库(请参阅Famo.us)。另一个是现代浏览器中的JS引擎,无论是台式机还是手机,都非常快。有一个基准测量它的本机C编译代码的性能的80%。当然也有例外情况,但JS在浏览器中的令人印象深刻的性能仍然存在。 人们真正的“意思”是DOM很慢。 JS非常快,他们从来没有意识到它。 – pmont 2015-03-09 20:55:35