6

Mi sono imbattuto in qualcosa di strano con IE10 e IE9, non influendo su IE8: un elemento figlio "position: fixed" è nascosto quando il limite-raggio, overflow e la posizione del suo genitore è impostata (vedere l'esempio jsfiddle). Se una di queste proprietà è disabilitata, viene visualizzato l'elemento fisso.ie10, border-radius, overflow, posizione e posizione nascosta: bambino fisso

Ho messo un esempio dal vivo a http://jsfiddle.net/arkhi/7Nydz/.

<div style="position:relative; border-radius:5px; overflow:hidden;"> 
    <a style="position:fixed">fixed child</a> 
</div> 
  1. Idealmente, tutte le caselle rosse dovrebbero comparire in basso a destra della pagina, da destra a sinistra.
  2. Su IE9 e IE10, la prima casella è nascosta.
  3. Se si esegue una "selezione di tutti", quindi si fa clic in qualche punto della pagina, accade che venga visualizzata la prima casella.

Mi piacerebbe sapere se qualcuno ha qualche spiegazione o collegamento che spiega questo bug (se questo è un bug e non io non vedo l'ovvio).

Grazie mille per qualsiasi feedback su questo!

+0

Posso confermare che ciò accade anche in IE11. E suppongo che la ragione per cui non influisce su IE8 è che IE8 non supporta 'border-radius'. – Spudley

+0

Grazie per l'attenzione su IE11. Spero ancora di ottenere una risposta qui o su MS bugtracker. – arkhi

risposta

1

sembra essere un problema comune:

Fortunatamente, c'è una soluzione rapida e sporca: è sufficiente posizionare un vuoto statico <div></div> immediatamente prima e o dopo dell'elemento non posizionato/posizione assoluta. Nell'esempio fisso, un vuoto <div></div> dopo l'intestazione impedisce il verificarsi del problema.

I devoti della semantica dell'HTML saranno inorriditi, ma temo che non ci sia una correzione solo per CSS ... a meno che qualcuno non sappia diversamente ...

http://www.sitepoint.com/fix-disappearing-absolute-position-element-ie/

+1

Non penso che questo sia lo stesso bug, e l'aggiunta di un div vuoto come descritto non cambia nulla nel codice jsfiddle dell'OP. – Spudley

2

In assenza di una risposta utile da chiunque altro, l'unico modo sono riuscito a risolvere questo è quello di aggiungere un elemento nidificato ulteriore, e dividere i tre stili colpite in due strati .

<div>  //style with position:fixed 
    <div> //style with overflow:hidden and border-radius 
    .... 
    </div> 
</div> 

Non è l'ideale, ma risolve il problema.

Per dimostrare che funziona, ecco la vostra jsFiddle con la modifica apportata al test-1: http://jsfiddle.net/7Nydz/2/

+0

Ciò funzionerebbe definitivamente. Nel nostro caso (aziendale) presente, per il momento abbiamo deciso di ignorare il problema, poiché questo errore influisce solo su una funzionalità "piacevole da avere ma non necessaria". Probabilmente userò la tua soluzione se pensiamo di lavorarci su. Per quanto riguarda una risposta al motivo di questo errore, aggiornerò questo problema se trovo qualcos'altro o ottengo una risposta da qualsiasi altra parte. Grazie. – arkhi

+0

Vorrei che questa risposta fosse sopra l'altra votata, ma allo stesso tempo non c'è una vera spiegazione sul perché per ora. Quindi sono disposto a rimuovere lo stato "accettato", ma non posso farlo davvero se qualcuno sta effettivamente cercando una soluzione. Ci sarebbe un modo più intelligente di "non accettare" pur mantenendo questo in cima? – arkhi

0

Quindi questo è solo un'idea e non posso testare perché sono su un Mac e non hanno una macchina Windows a portata di mano proprio adesso. Ma hai provato a usare un clearfix sull'elemento fisso? Ciò farà sì che il browser gestisca l'elemento in modo diverso e visualizzi qualcosa di aggiuntivo dopo di esso. Con un po 'di fortuna potrebbe apparire?

Probabilmente non funziona, ma a volte accadono cose strane.

+0

Clearfix di solito risolvono problemi di float, quindi non mi aspettavo davvero un clearfix per funzionare. L'ho provato anche solo per il gusto di provare ('bruciato anche delle candele, a volte il voodoo funziona con IE) e ... Non ha funzionato. :) – arkhi

+0

haha ​​grazie per aver provato! :) – greenish

Problemi correlati