2009-02-16 7 views

risposta

7

Questo è un bug noto con IE6 con il tentativo di posizionare in modo assoluto i div in cima ai controlli selezionati.

Esistono soluzioni alternative che includono gli shim iframe, ma non c'è una buona risposta. La risposta dello shim iframe è posizionare un iframe al di sotto di qualsiasi div che stai cercando di posizionare sopra una selezione, con iframe della stessa dimensione. Sfortunatamente, questo è un enorme rompicoglioni.

Suggerisco di utilizzare un sistema di menu javascript che utilizza già gli shim iframe, ad esempio YUI menus (e presumo jQuery).

2

Il problema è che SELECT sono elementi "windowed" in IE6 e il loro z-index è sopra tutti gli altri componenti non "windowed". Se devi assolutamente avere qualcosa sopra una combox, potresti volerlo mettere dentro un altro componente con finestra, come un IFRAME, e impostare lo z-index del componente su un valore superiore a quello della casella combinata.

Devo ammettere, questa non è una soluzione carina.

7

La maggior parte delle principali librerie javascript è facile da implementare soluzioni a questo problema. Usiamo jQuery e il bgiframe plugin è molto facile da usare e risolve il problema.

+1

@jonstjohn - Fantastico! Questo ha funzionato molto bene - l'unico problema rimasto con l'utilizzo del plugin bgiframe è che il bordo del DIV che ho ancora viene sovrapposto dagli elenchi a discesa. Quindi la parte principale del DIV mostra la parte superiore dei menu a discesa, ma il bordo nero (CSS - border: 2 px solid #cecece;) appare ancora sotto i menu a discesa. Ti sei mai imbattuto in questo? –

+0

Oops - Non importa. Ho RTFM e ho visto gli offset "top", "left", ecc. –

+0

Sembra "Top", "Left", ecc. Non fare nulla. –

3

Daniel ha decisamente ragione. Questo è un problema brutto.

Tuttavia, potrebbe esserci un'altra soluzione. Se si utilizzano menu a più livelli che si aprono e si chiudono, è possibile scrivere codice JavaScript che nasconde letteralmente gli elementi SELEZIONATI problematici quando viene aperto il popup (stile l'elemento per avere una visibilità di nascosto). Quindi, quando il menu si chiude, è possibile visualizzare lo stesso controllo SELECT.

Quindi basta scrivere codice che rileva quali oggetti SELECT interferiscono con un particolare menu prima che si apra. Non è un codice banale, ma è sicuramente possibile scrivere. Quindi vorrei solo avvolgere l'intera porzione di codice in un condizionale che controlla se l'utente è su IE in quanto non è necessario eseguirlo su Firefox o Safari.