jQuery + CSS + IE проблема: скрытые элементы появляются на короткое время при загрузке страницы - PullRequest
0 голосов
/ 12 января 2011

Кто-нибудь еще испытывал сценарий, описанный ниже?

Для примера, вот очень простое описание:

#menuHolder содержит пункты меню (#itemA, #itemB, #itemC, ... #itemZ)

В CSS у меня переполнение #menuHolder's установлено как скрытое.

Используя jQuery, я устанавливаю для #menuHolder значение minHeight, равное 0, а затем расширяю его до значения maxHeight, равного 300, когда определенный элемент накладывается.

Нет проблем в FF, Safari или Chrome ... но вот что происходит в IE:

На короткое время #itemA, #itemB, #itemC, ... #itemZ появляются друг над другом при загрузке страницы в IE. Затем они исчезают и ведут себя как обычно.

Это как если бы либо переполнение: скрытый, либо minHeight не распознавались до загрузки страницы.

Есть идеи?

Спасибо B

Ответы [ 4 ]

0 голосов
/ 24 января 2014

По-прежнему нет идеального решения для некоторых старых таблиц данных jQuery (например, 1.6.x), кажется, что весь скрытый столбец будет кратко показан: будь то использование свойства bVisibility: false в данных таблицы или установка столбца видимость динамически. fnSetColumnVis (1, false);

, например

jquery datatables скрыть столбец

Кто-нибудь знает, что это было решено в новой версии таблиц данных?

0 голосов
/ 12 января 2011

Может быть, у вас должен быть дисплей контейнера: ни один в css, предварительно загрузите любые изображения, используемые в теперь невидимом контейнере, используя jquery, затем в jquery используйте правильную высоту вместо min- и max-, когда происходит наведение курсора.

0 голосов
/ 05 февраля 2013

В некоторых случаях что-то вроде этого будет работать:

На элементе, который не должен появляться при загрузке страницы, скрыть его в разметке:

<ul id='my_element' style='visibility:hidden'>

Затем, прежде чем применить эффект jquery, чтобы показать его (т. Е. SlideDown ()), удалите атрибут И повторно его скройте:

$me = $('#my_element');  // cache it to improve performance
$('#some_other_element').click(function() {
  $me('style','visibility:visible').hide();
  $me.slideDown(800);
});

Однажды поддержка IE не потребует таких выходок. До тех пор, надеюсь, это поможет.

0 голосов
/ 12 января 2011

то есть (по крайней мере, до 7, если я правильно помню), не знаю о минимальной высоте

решение состоит в том, чтобы использовать некоторые CSS такие

min-height:100px;
height:100px; /* for ie7 */
height:auto !important; /* for all others */

было бы лучшенацеливаться на ie6 / 7 с некоторыми трюками с условными комментариями, такими как http://html5boilerplate.com

...