【发布时间】:2010-10-11 03:53:47
【问题描述】:
有时我可以选择使用 CSS 元素:悬停或 JavaScript onmouseover 来控制页面上 html 元素的外观。考虑以下 div 包装输入的场景
<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 慢吗?
【问题讨论】:
-
CSS 方法不需要 Javascript。
-
我建议使用 Whatever:hover :http://www.xs4all.nl/~peterned/csshover.html
-
"javascript 比 css 慢吗?"您不会注意到它,但是如果同时运行许多其他脚本(尤其是手持设备、移动网站),javascript 会消耗更多资源并且会减慢速度,这不是它应该用于的用途。另一方面,CSS 使用较少的资源,并且仅用于演示。您应该只使用 javascript 来增强网站导航和功能,但对于未启用 js 的用户来说,它应该仍然可以导航。我建议使用 CSS :hover 方法。
-
这是一个老问题,因此上述评论不再有效并不奇怪,而且可能永远不会有效。原因之一是缺乏提供高性能样板的优秀 JS 库(参见 Famo.us)。另一个是现代浏览器中的 JS 引擎,无论是桌面浏览器还是移动浏览器,都非常快。有一个基准测量它的性能是本机 C 编译代码的 80%。当然也有例外的情况,但是 JS 在浏览器中令人印象深刻的性能仍然存在。人们真正的“意思”是 DOM 很慢。 JS 相当快,他们只是没有意识到这一点。
标签: javascript css