ok il metodo va bene.

ma non capisco quale problema lamenti quando dici "Ma non va per niente bene in chrome, safari, e opera."
a parte qualche problema di formattazione mi pare funzioni tutto

per l'effetto più morbido ti serve un supporto javascript
prova a cercare in rete