Ответ 1
Вы попросили решение для IE8 и IE9.
Пусть начнется с IE8. Короткий ответ: Это невозможно. Из-за того, как IE8 и более ранние окна выбора делают, вы просто не можете скрыть стрелку раскрывающегося списка. Элементы управления в блоке невозможно стилизовать в старом IE и всегда отображаться над любым другим контентом.
Там просто нет никакого решения, кроме переписывания всего элемента управления select в Javascript.
Теперь IE9. Вы можете скрыть стрелку со стрелкой. Это не стандартная вещь, но вы можете ее взломать.
Вам нужно начать с элемента оболочки (например, <div>
) вокруг вашего окна выбора. Затем вы можете создать стиль с помощью селектора :before
, чтобы поместить дополнительный бит содержимого в верхнюю часть стрелки, эффективно скрывая его.
Здесь CSS:
div {
position:relative;
display:inline-block;
z-index:0
}
div select {
z-index:1;
}
div:before {
display:block;
position:absolute;
content:'';
right:0px;
top:0px;
height:1em;
width:1em;
margin:2px;
background:red;
z-index:5;
}
... и см. здесь для jsFiddle, чтобы увидеть его в действии.
Примечание. Я использовал red
как цвет наложения, чтобы сделать очевидным, что происходит. Очевидно, что при обычном использовании вы хотите использовать белый цвет, чтобы он не выделялся.
Вы также заметите, что, как я сказал выше, это не работает в IE8.
Очевидно, что это не то же самое, что "правильное" решение для IE10 и других браузеров, которые фактически удаляют стрелку; все, что мы здесь делаем, скрывает это. А это означает, что мы закончили раздражающим белым патчем в конце окна выбора, где раньше была стрелка.
Мы можем сделать следующий стиль, чтобы решить эту проблему: например, если мы сделаем элемент контейнера фиксированной шириной и overflow:hidden
, мы можем избавиться от белого патча, но тогда у нас есть проблемы с границами нашего поля выбора, сломанный, поэтому нам нужно делать дальнейшие стилистические исправления; все может стать немного беспорядочным. Плюс, конечно, этот параметр работает только в том случае, если сам поле выбора является известной фиксированной шириной.
Итак, у вас есть: есть варианты для этого в IE9. Однако они не очень хороши, и, честно говоря, они могут не стоить усилий. Но если вы в отчаянии, вы можете это сделать.
О, и не забудьте сделать этот код CSS конкретным, поэтому он работает только в IE9, иначе это вызовет проблемы в других браузерах.