Автозаполнение YUI отображается под другими элементами страницы в IE7.

StackOverflow https://stackoverflow.com/questions/88883

Вопрос

Сейчас я работаю над страницей, на которой есть столбец блоков, оформленный сексуальными тенями, углами и тому подобным, используя пример. здесь.Должен признаться, я не до конца понимаю, как работает этот CSS, но он выглядит большой.

Внутри самого верхнего поля находится текстовый ввод, используемый для поиска.Это окно поиска подключено к Автозаполнение YUI виджет.

Все работает нормально в Firefox3 на Mac, FF2 на Windows, Safari на Mac.В IE7 на WinXP предложения автозаполнения отображаются под прямоугольниками с закругленными углами, что делает все, кроме первого, нечитаемым (хотя вы все равно можете увидеть достаточно выглядывающих между блоками, и я уверен, что IE7 действительно получает более одного предложения).

С чего начать поиск решения проблемы?

Вот как выглядит успех в FF2 на WinXP:

alt text

А вот как выглядит сбой в IE7:

alt text

Это было полезно?

Решение 2

Рабочее решение, которое я наконец реализовал, было основано на чтении это объяснение снова и снова.

В базовом HTML все синие элементы с закругленными углами являются DIV, и все они являются одноуровневыми (все дочерние элементы одного и того же DIV).

Z-индекс самого div с автозаполнением (который является праправнуком div-контейнера с закругленными углами) может быть сколь угодно высоким, и это не решит эту проблему, потому что IE по сути отображает все содержимое поиска. коробка ниже все содержимое поля «Жизненная статистика», поскольку оба имели z-индекс по умолчанию, а «Жизненная статистика» была позже в HTML.

Хитрость заключалась в том, чтобы присвоить каждому из этих родственных DIV (синие контейнеры с закругленными углами) нисходящие z-индексы и пометить их все как позицию: относительно.Таким образом, синий элемент div, содержащий поле поиска, имеет значение z-index:60, поле «Vital Stats» — z-index:50, поле «Tags» — z-index:40 и так далее.

Итак, в более общем смысле, найдите общего предка как для перекрывающегося, так и для перекрывающегося элемента.К непосредственным дочерним элементам общего предка примените z-индексы в том порядке, в котором вы хотите, чтобы контент отображался.

Другие советы

Джереми,

Извините, что так поздно, но, надеюсь, ответ пригодится вам в будущем проекте.

Проблема здесь в том, что IE создает новый порядок наложения каждый раз, когда есть элемент с положением: относительное, а это означает, что сам по себе z-индекс не является единственным контролирующим фактором.Подробнее об этом можно прочитать здесь:

http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html

Чтобы решить проблему, если я правильно понимаю вашу проблему, примените позицию: относительно контейнера, который обертывает всю вашу реализацию автозаполнения (а затем позицию: абсолютную к вашему контейнеру результатов).Это должно создать независимый порядок наложения в IE для этих элементов, который позволит им плавать над другими позициями: относительными стеками, которые появляются позже на странице.

С уважением, Эрик

я не полностью понимание настройки, которая приводит к проблеме, но вы можете изучить свойство useIFrame объекта автозаполнения YUI — оно размещает объект iframe под полем автозаполнения, что позволяет полю затем плавать над объектами, которые скрывают его в Глючная компоновка IE.

http://developer.yahoo.com/yui/docs/YAHOO.widget.AutoComplete.html#property_useIFrame

Но в документации говорится, что это имеет значение в версиях 5.5 < IE < 7, так что это может быть не та проблема, с которой вы столкнулись.Итак, еще раз, не до конца понимая, с какой установкой вы работаете, вы также можете попробовать поэкспериментировать с различными z-индекс значения для поля автозаполнения и окружающих элементов уровня блока.

Убедитесь, что z-индекс элемента div с автозаполнением больше, чем элементы div, составляющие поле с закругленными углами.Я полагаю, что Microsoft устанавливает z-индекс верхних элементов на 20000 или 100000.Возможно, было бы разумно сделать то же самое.

У меня была аналогичная проблема, я исправил ее, просто изменив z-индекс для разных элементов div.Просто установите большее число для каждого div в том порядке, в котором он должен отображаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top