Для управления видимостью элемента документа служат два CSS_атрибута: visibility и display. Атрибут visibility прост: если его значение равно hidden, то
элемент не отображается, если visible, – отображается. Атрибут display более универсален и служит для задания варианта отображения элемента, определяя, блочный это элемент, встраиваемый, списочный или какой_нибудь другой. Если же атрибут display имеет значение none, то элемент вообще не отображается и да_ же не размещается.
Различие между атрибутами стиля visibility и display имеет отношение к их воз_ действию на элементы, не позиционируемые динамически. Для элемента, распо_ ложенного в нормальном потоке вывода документа (с атрибутом position, рав_ ным static или relative), установка атрибута visibility в значение hidden делает элемент невидимым, но резервирует для него место в документе. Такой элемент может повторно скрываться и отображаться без изменения компоновки доку_ мента. Однако если атрибут display элемента установлен в значение none, то ме_ сто в документе для него не выделяется; элементы с обеих сторон от него смыка_ ются, как будто его вообще не существует. (По отношению к абсолютно или фик_ сированно позиционируемым элементам атрибуты visibility и display имеют одинаковое действие, т. к. эти элементы в любом случае никогда не являются ча_ стью общей компоновки документа.) Обычно атрибут visibility задается при ра_ боте с динамически позиционируемыми элементами, а атрибут display бывает по_ лезен в разворачивающихся и сворачивающихся структурированных списках.
Обратите внимание: нет особого смысла использовать атрибуты visibility и dis_ play, чтобы сделать элемент невидимым, если вы не собираетесь динамически устанавливать их в JavaScript_коде, чтобы в какой_то момент сделать его снова видимым! Как это делается, я расскажу далее в этой главе.