Bem, essa é realmente uma pergunta muito interessante. Estou tentando pensar em como você faria uma referência em algo assim, especialmente porque na maioria das vezes nem o CSS nem o JavaScript farão coisas realmente intensivas em termos de computação em uma página da web.
Minha intuição diria que use CSS o máximo possível, mas não faça disso uma regra rígida e rápida.
a:hover {
background-color: green;
}
é melhor semanticamente então
$('a').onmouseover(function() {
$(this).css('background-color','green');
})
MAS
$('a').onmouseover(function() {
if (somethingelsehappened) {
$(this).css('background-color','green');
}
})
seria difícil (embora não impossível) no CSS. Você poderia fazê-lo desta maneira.
$('a').onmouseover(function() {
if (somethingelsehappened) {
$(this).addClass('Green');
}
})
a.green {
background-color: green;
}
Essa seria realmente uma maneira um pouco mais estranha de fazer o que poderia ter sido feito diretamente no JavaScript, mas eu penso nisso há alguns minutos e, mesmo aqui, a solução certa pode muito bem ser um CSS, por exemplo se você estava definindo muitos atributos ao passar o mouse.
** Observe que não se espera que nenhum código funcione, apenas para fins de demonstração. **