Hay ocasiones en que puedo elegir entre usar un elemento CSS: hover o JavaScript onmouseover para controlar la apariencia de los elementos html en una página. Considere el siguiente escenario donde un div envuelve una entradaCSS hover vs. JavaScript mouseover
<div>
<input id="input">
</div>
Quiero que la entrada para cambiar el color de fondo cuando el cursor del ratón pasa sobre el div. El enfoque CSS es
<style>
input {background-color:White;}
div:hover input {background-color:Blue;}
</style>
<div><input></div>
el enfoque JavaScript es
<div onmouseover="document.getElementById('input').style.backgroundColor='Blue';">
<input id="input">
</div>
¿Cuáles son las ventajas y desventajas de cada método? ¿El enfoque de CSS funciona bien con la mayoría de los navegadores web? ¿JavaScript es más lento que css?
"¿Es javascript más lento que css?" No lo notarás, pero javascript consumirá más recursos y puede ralentizar las cosas si se ejecutan muchas otras secuencias de comandos al mismo tiempo (piénsalo especialmente para dispositivos de mano, sitios web móviles) y no es para lo que debería usarse. Los CSS, por otro lado, utilizan menos recursos y están destinados exactamente a la presentación. Debería usar javascript solo para mejorar la navegación y la funcionalidad del sitio web, pero debería ser navegable para usuarios sin js habilitados. Sugiero el enfoque CSS: hover. –
Esta es una pregunta antigua, por lo que no es sorprendente que el comentario anterior ya no sea válido y que nunca haya sido así. Una razón es la falta de buenas bibliotecas de JS que proporcionen una repetición repetitiva de alto rendimiento (consulte Famo.us). Otra es que los motores JS en los navegadores modernos, tanto de escritorio como móviles, son bastante rápidos. Hay un punto de referencia que lo mide al 80% del rendimiento del código compilado C nativo. Hay excepciones, por supuesto, pero el impresionante rendimiento de JS en el navegador sigue en pie. Lo que la gente realmente "quiere decir" es que el DOM es lento. JS es bastante rápido, simplemente nunca se dieron cuenta. – pmont