HTML-скрытие Div перед загрузкой страницы?

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

Внешний вид и расположение каждого div обрабатывается с помощью CSS.

Я хочу выборочно скрыть некоторые элементы div в зависимости от некоторых значений состояния. Для этого была создана функция javascript "hideSomeDivs()". (Функция выполняет итерацию по всем элементам div, при необходимости устанавливая для свойства style.display каждого элемента значение «none».)

Проблема: вызывать функцию hideSomeDivs() из будет слишком поздно: страница уже загружена и визуальные изменения отображаться не будут. Первоначальная планировка сохранена.

В. как/где я могу вызвать эту функцию, чтобы затронутые элементы div были скрыты, а весь макет был скорректирован соответствующим образом? Спасибо.

Дальнейшая информация:

  • помимо интерактивности javascript, страница является статической (т. е. серверная обработка недоступна).

  • Кроме того, я пытаюсь избежать любого «всплывания», когда элементы отображаются/скрываются после загрузки страницы и ее отображения в окне.

  • Кроме того, мне нужно, чтобы макет был переоценен и перерисован. например если я скрою разделы с 1 по 4, но покажу раздел 5, то раздел 5 должен появиться вверху страницы.


person SirRatty    schedule 04.04.2011    source источник


Ответы (3)


Подумайте об этом с другой стороны - скройте все свои div по умолчанию, а затем используйте javascript, чтобы показать их по мере необходимости.

Конечно, вы можете просто устранить необходимость в javascript, если у вас есть серверный язык (например, PHP, ASP.NET), который создает страницу, тогда вы можете просто правильно установить их скрытое состояние для начала.

person slugster    schedule 04.04.2011
comment
slugster, спасибо за ответ. К сожалению, здесь я не могу использовать PHP или любой другой серверный скрипт. Если я скрою div по умолчанию через CSS, а затем покажу их через javascript, не будет ли сохранено исходное форматирование? то есть элемент, который изначально был, скажем, пятым на странице, все равно будет отображаться в исходном положении? (Это нежелательное поведение. Мне нужно переоценить и перерисовать макет.) - person SirRatty; 04.04.2011
comment
Вы по-прежнему можете перемещать элементы div в любое удобное для вас место, манипулируя DOM с помощью Javascript. - person Rasika; 04.04.2011
comment
Расика, я не переустанавливаю div вручную. Вся компоновка выполняется с помощью CSS (и это необходимо сделать из соображений сложности и единообразия на сайте). Ура. - person SirRatty; 04.04.2011

В вашем HTML-коде введите код стиля, который по умолчанию скрывает div. Это будет оцениваться намного раньше, чем Javascript.

person Rasika    schedule 04.04.2011
comment
Спасибо за отзыв. Пожалуйста, смотрите мой исправленный пост и мой ответ на slugster. Ваше здоровье. - person SirRatty; 04.04.2011

Возможно, вы захотите вызвать функцию «hideSomeDivs()» в событии onload элемента body.

person Zen Pak    schedule 04.04.2011
comment
Я думаю, что он уже делает это. Но это оценивается только после того, как страница загружена, и он хочет устранить задержку на этом. - person Rasika; 04.04.2011