При использовании IE вы не можете поместить абсолютно позиционированный div над выбранным элементом ввода. Это потому, что элемент select считается объектом ActiveX и находится поверх каждого элемента HTML на странице.
Я уже видел, как люди скрывают выбор при открытии всплывающего div, что приводит к довольно плохому пользователю, когда элементы управления исчезают.
У FogBugz на самом деле было довольно умное решение (до версии v6) для каждого выбора в текстовые поля при отображении всплывающего окна. Это решило ошибку и обмануло глаз пользователя, но поведение не было совершенным.
Другое решение находится в FogBugz 6, где они больше не используют элемент select и перекодируют его везде.
Последнее решение, которое я использую в настоящее время, испортило механизм рендеринга IE и заставил его отображать абсолютно позиционированный <div>
как элемент ActiveX, гарантируя, что он может жить над элементом select. Это достигается путем размещения невидимого <iframe>
внутри <div>
и стилизации его с помощью:
#MyDiv iframe
{
position: absolute;
z-index: -1;
filter: mask();
border: 0;
margin: 0;
padding: 0;
top: 0;
left: 0;
width: 9999px;
height: 9999px;
overflow: hidden;
}
Есть ли у кого-то еще лучшее решение, чем этот?
EDIT: Цель этого вопроса настолько информативна, насколько это реальный вопрос. Я считаю, что трюк <iframe>
является хорошим решением, но я все еще ищу улучшения, как удаление этого уродливого бесполезного тега, который ухудшает доступность.