При использовании IE вы не можете поместить абсолютно позиционированный div над выбранным элементом ввода. Это связано с тем, что элемент select считается объектом ActiveX и находится над каждым элементом HTML на странице.
Я уже видел, как люди скрывали выбор при открытии всплывающего окна, что приводит к довольно плохому опыту пользователя с исчезновением элементов управления.
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;
}
У кого-нибудь есть лучшее решение, чем это?
РЕДАКТИРОВАТЬ: Цель этого вопроса столь же информативным, как и реальный вопрос. Я считаю трюк <iframe>
хорошим решением, но я все еще ищу улучшения, такие как удаление этого ужасного бесполезного тега , который ухудшает доступность.