Rozwiązanie problemu overflow: auto w IE
04 kwietnia 2006
Costa w swoim ostatnim e-mailu poskarżył mi się na nieprawidłową obsługę overflow: auto w Internet Explorerze. Wynalazł hacka aby IE zaczął respektować zasady wystającej treści poprzez nadanie jej szerokości.
<!--[if lte IE 6]><style type="text/css">pre {width: 100%;}</style><![endif]-->
Lecz nie jest to rozwiązanie optymalne. Problemem tutaj występującym jest dodanie scrollbarów także w pionie. Głównie przez to że po zaaplikowaniu szerokości element dostaje layout i renderowanie wariuje (screen). Wygląda to paskudnie i równie paskudnie się takie pole obsługuje.
Myślałem nad tym trochę i po przewertowaniu MSDN okazało się, że Internet Explorer wspiera overflow-x oraz overflow-y. Wystarczy teraz razem z ustawieniem szerokości na 100% dodać takie linie (wszystko nadal w komentarzu warunkowym):
pre {width: 100%;overflow-x: auto;overflow-y: hidden;}
A pozbędziemy się zbędnych pionowych scrollbarów (screen). Czy jednak na pewno zbędnych? IE ma tendencje do obcinania ostatniej linijki tak obsługiwanego elementu. Suwaki umożliwiały (kulawy) dostęp do niej. Zaznaczyć także się jej nie da. Więc na zdrowy rozum należy dodać padding o wysokości jednej linii tekstu - 1em.
pre {width: 100%;overflow-x: auto;overflow-y: hidden;padding-bottom: 1em;}
Efekt końcowy (screen) na stronie testowej jest zadowalający. Padding dolny można zwiększyć odrobinę, aby nadać więcej przejrzystości.