Ci sono momenti in cui ho una scelta tra l'utilizzo di un elemento CSS: hover o JavaScript onmouseover per controllare l'aspetto degli elementi html su una pagina. Si consideri il seguente scenario in cui un div avvolge un ingressoCSS mouseoverover JavaScript mouseover
<div>
<input id="input">
</div>
voglio l'input per cambiare il colore di sfondo quando il cursore del mouse passa sopra il div. L'approccio CSS è
<style>
input {background-color:White;}
div:hover input {background-color:Blue;}
</style>
<div><input></div>
L'approccio JavaScript è
<div onmouseover="document.getElementById('input').style.backgroundColor='Blue';">
<input id="input">
</div>
Quali sono i vantaggi e gli svantaggi di ogni approccio? L'approccio CSS funziona bene con la maggior parte dei browser web? JavaScript è più lento del css?
"javascript è più lento del css?" Non lo noterete, ma javascript consumerà più risorse e può rallentare se molti altri script sono in esecuzione contemporaneamente (pensate soprattutto per dispositivi palmari, siti Web mobili), e non è quello per cui dovrebbe essere usato. D'altra parte, i CSS usano meno risorse e sono pensati esattamente per la presentazione. Dovresti usare javascript solo per migliorare la navigazione e la funzionalità del sito, ma dovrebbe essere ancora navigabile per gli utenti senza js abilitato. Suggerisco il CSS: approccio al passaggio del mouse. –
Questa è una vecchia domanda, quindi non sorprende che il commento sopra non sia più valido e potrebbe non essere mai stato. Una ragione è la mancanza di buone librerie JS che forniscono un boilerplate ad alte prestazioni (vedi Famo.us). Un altro è che i motori JS nei browser moderni, sia desktop che mobili, sono piuttosto veloci. C'è un punto di riferimento che lo misura all'80% delle prestazioni del codice compilato C nativo. Ci sono ovviamente dei casi eccezionali, ma l'impressionante prestazione di JS nel browser è ancora valida. Ciò che le persone realmente "intendono" è che il DOM è lento. JS è abbastanza veloce, non l'hanno mai realizzato. – pmont