IE 6 и select
Вторник, июля 15, 2008 1:09Сегодня столкнулся с такой проблемой. Необходимо было вывести слой поверх выпадающего списка (select). Разумеется, в нормальных браузерах все отображалось так как нужно. Но вот IE6 отличился и доказал, что у него свой взгляд на правильное отображение страницы.
Оказывается что select в IE6 не только плохо воспринимает CSS стили, но еще и ни чем не перекрывается и отображается поверх всех слоев! Не помогает даже z-index.
К счастью, решение проблемы нашлось довольно быстро. Для того чтобы скрыть select надо поверх него вывести iframe. Вот как это делается:
HTML
<select>
<option>123</option>
</select>
<div id="layer">
<iframe></iframe>
<p>Слой с абсолютным позиционированием</p>
</div>
CSS
#layer {
position:relative;
top:10px; left:20px;
width:150px; height:100px;
}
#layer iframe {
position:absolute;
width:150px; height:100px;
border:none;
z-index:-1;
_filter:mask();
}
select { width:100px; }
filter:mask() позволяет скрыть iframe в IE. Такого же эффекта можно добиться с помощью filter:alpha(opacity=0). Для того чтобы iframe не перекрывал текст, ссылки и прочие элементы, мы задаем для него отрицательный z-index:-1. Можно также скрыть iframe для остальных браузеров через условные комментарии (для надежности).
Вот в принципе и все. Кстати, если знаете другое решение данной проблемы обязательно пишите в комменты.


Snowcore пишет:
17 февраля 2009 в 20:11
Вот сидим, голову ламаем над этим, блин!
Тогда вообще лучше взять и написать новый браузер!!!
Другие решения не впечатляют: некоторые предлагали вообще написать свой select средствами javascript
Дмитрий пишет:
23 февраля 2009 в 16:10
Спасибо за решение! Попробую, сам столкнулся с той же проблемой. Думал перерисовывать select.
Stan пишет:
26 октября 2009 в 16:05
Помогите разобраться в чем может быть проблема, http://new.konsib.com/ru/barnaul.html - здесь есть SELECT в самом верху, на всех браузерах все нормально - padding-bottom: 10px; как положено, а на Осле Шестерке как всегда - SELECT залез наверх всего и никаким paddingам не подчиняется собака…
Уже все перепробовал, подскажите как быть…
Заранее благодарю за ответ!
axel пишет:
18 апреля 2010 в 23:01
да ну iframe а по другому нельзя че ли…
Despotic пишет:
11 августа 2010 в 18:48
Спасибо! Метод работает.
Только при скролле select-ы, прикрытые таким образом, всё равно просвечиваются.
Может, кто-то знает, как лечить?