Partiamo dall'inizio del tuo post.
Scrivi questa regola:
codice:
div a:hover {
//colore dello sfondo
//width=totpx
}
In pratica dichiari che tutti i link nello stato hover figli di un div, devono avere le seguenti proprietà.
Per essere valida questa regola dovresti avere una struttura così:
mentre la struttura che hai postato prevede una situazione opposta, dove hai un div che è annidato dentro un link.
Il link è un elemento inline, mentre il div è un elemento di blocco. Nell'html non puoi annidare un elemento di blocco dentro un elemento inline, mentre può avvenire la situazione opposta.
Per fare quello che richiedi inizialmente nel post, non hai bisogno del supporto di un link.
Per cambiare lo sfondo di un div al passaggio del mouse, basta dichiarare questa regola:
codice:
div:hover {
background:colore;
width:....
...
}
Questa regola funziona, ma non su tutti i browser. Ad esempio IE nelle versioni precedenti alla 7 supporta la pseudo classe:hover solo se applicata ai link, ma non ad altri elementi.
Dipende se ti interessa o meno avere una soluzione cross-browser.
Spero di essere stato abbastanza chiaro nella spiegazione=).