Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Проблема с отображением div?


Автор: zodiac 7.12.2010, 11:47
Здравствуйте!
Я сделал некоторое подобие аккордиона с применением слоев. Это корректно отображается в IE, но в Firefox 3.6 слой отказывается разворачиваться.
Когда выполняется определенная функция, свойствам слоя устанавливается height и visibility=visible. Предпологается, что слой растянется и все что находится ниже его, сдвинется вниз, т.е. все будет работать как нормальный аккордеон.  В IE все так и работает, но в Firefox элементы, которые расположены ниже слоя, отказываются сдвигаться, и происходит наслоение, из-за чего содержимое слоя становится нечитабельным(
Стиль слоя:
Код

margin-left:15px;
padding:5px 5px 5px 5px;
background-color:#f0ede8;
border:1px thin navy;
visibility:hidden;
height:0px;
overflow:hidden;


После выполнения функции:
Код

margin-left:15px;
padding:5px 5px 5px 5px;
background-color:#f0ede8;
border:1px thin navy;
visibility:visible;
height:500px; // к примеру, может быть и больше и меньше
overflow:visible;


В чем может быть проблема?

Автор: Cheburek 7.12.2010, 11:48
Используй лучше, display:none; для скрытия элемента

Автор: SelenIT 7.12.2010, 12:35
Цитата(zodiac @  7.12.2010,  11:47 Найти цитируемый пост)
свойствам слоя устанавливается height

Этот height берется из реальной высоты содержимого (scrollHeight) или "от балды"? Если второе — слой и должен раздвигать окружение только на эту заданную величину, а всё, что сверх, при overflow:visible и должно "наслаиваться", такой стандарт (IE в режиме совместимости его не соблюдает, но это его проблемы). Если надо раздвинуть на фактическую высоту содержимого — имхо, проще всего задать height:auto. А зачем здесь игры с visibility, я честно говоря вообще не понял...

Автор: zodiac 7.12.2010, 16:09
Cheburek, спасибо, попробую!
SelenIT, height передается функции (раскрывает слой, устанавливая ему стили) в качестве параметра и подбирается к каждому конкретному блоку вручную...
Но суть в том, что даже если height=1000, реальная высота слоя (в данном случае он хорошо виден, поскольку установлен цвет фона) в лучшем случае 10-15 пикселей, т.е. стандартная высота строки. Содержимое слоя исправно показывается поверх остального контента страницы.
Visibility как раз и есть ключевой фактор, тк для скрытия слоя (и закрытия аккордеона) ставится visibility='hidden', слой убирается с глаз долой, и height=0, для верности. Чтобы открыть его содержимое - обратные действия.
Попробую использовать свойство display вместо всего вышеописанного, как посоветовал Cheburek...

Автор: zodiac 7.12.2010, 17:32
Если использовать свойство display, все работает как надо!)  smile
Спасибо за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)