YUI Autocomplete отрисовывается под другими элементами страницы в IE7

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

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

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

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

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

YUI Autocomplete отрисовывается под другими элементами страницы в IE7

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

YUI Autocomplete отрисовывается под другими элементами страницы в IE7

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
6 596
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

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

Спасибо, трюк с iframe действительно решил для меня некоторые проблемы в IE6, но, похоже, не влияет на эту проблему.

Jeremy Wadhams 18.09.2008 04:39

Извините за это - вы попробовали свойство z-index? Судя по скриншоту, который вы опубликовали после моего ответа, похоже, что это так. Я думаю, что есть панель инструментов разработчика для IE, которая позволит вам увидеть z-index различных элементов ...

delfuego 18.09.2008 20:45

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

Джереми,

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

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

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

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

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

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

Ответ принят как подходящий

В итоге я реализовал рабочее решение, основанное на многократном чтении это объяснение.

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

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

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

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

Из дюжины ответов на раздражающую ошибку z-index в Internet Explorer, которую я просмотрел, этот имеет рациональный смысл и (в отличие от других) сразу сработал для меня. Спасибо.

Dan Nissenbaum 25.10.2011 19:50

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