Z-порядок — это порядок перекрывающихся двумерных объектов, таких как окна в стековом оконном менеджере , фигуры в векторном графическом редакторе или объекты в 3D-приложении. [1] Одной из особенностей типичного графического интерфейса является то, что окна могут перекрываться, так что одно окно скрывает часть или все другое. Когда два окна перекрываются, их Z-порядок определяет, какое из них появится поверх другого.
Термин «Z-порядок» относится к порядку объектов вдоль оси Z. В координатной геометрии X обычно относится к горизонтальной оси (слева направо), Y — к вертикальной оси (вверх и вниз), а Z — к оси, перпендикулярной двум другим (вперед или назад). Можно представить себе окна в GUI как ряд плоскостей, параллельных поверхности монитора. Таким образом, окна располагаются вдоль оси Z, и информация о Z-порядке, таким образом, определяет порядок окон на экране спереди назад. Аналогией могут служить несколько листов бумаги, разбросанных на столе, каждый лист является окном, стол — экраном вашего компьютера, а верхний лист имеет самое высокое значение Z.
Обычно пользователи GUI могут влиять на Z-порядок, выбирая окно, которое будет выведено на передний план (то есть «выше» или «перед» всеми остальными окнами). Некоторые оконные менеджеры позволяют взаимодействовать с окнами, пока они не находятся на переднем плане, в то время как другие выводят окно на передний план всякий раз, когда оно получает ввод от пользователя. Также возможно назначить специальные окна «всегда сверху»; затем они фиксируются в верхней части Z-порядка, так что (за редкими исключениями) никакое другое окно не может их перекрывать.
При работе с визуальными объектами на экране компьютера объект с Z-порядком 1 будет визуально «под» объектом с Z-порядком 2 или больше. Это то же самое, что создавать «слои» объектов, где Z-порядок определяет, какой объект находится над другим. HTML-страница может использовать CSS для указания Z-порядка, чтобы некоторые объекты могли быть наложены друг на друга.
Z-упорядочение также используется в 3D-приложениях для определения видимости объектов на основе перекрытия с другими объектами. Это дает пользователю преимущество в скорости, поскольку компьютеру не нужно визуализировать невидимые объекты. [1] На практике, конечно, некоторые объекты могут быть скрыты лишь частично, и это осложнение, которое необходимо учитывать.
В ранней 3D-графике реального времени Z-порядок применялся на основе полигона, чтобы избежать использования Z-буфера, который в то время считался дорогим. В современной 3D-графике Z-порядок используется для рендеринга, зависящего от порядка, например, с полупрозрачными объектами. Его также можно использовать для уменьшения проблемы Z-борьбы , либо сначала рендеря более дальние объекты, а затем используя слабое неравенство в качестве теста глубины, либо, наоборот, рендеря спереди назад и используя строгое неравенство.
Фактическое число, назначенное определенному месту в Z-порядке, иногда называют z-индексом. В частности, свойство CSS , которое задает порядок стека определенных элементов, называется z-индексом. Элемент с большим порядком стека всегда находится перед другим элементом с меньшим порядком стека. [2]
p { позиция : относительная ; z-индекс : -1 ; }
Отрицательные порядки стека также могут использоваться таким же образом. Отрицательное значение будет отображаться позади положительного. z-index
работает только с элементами, имеющими значение позиции (например, position: relative;
), и для многих кодеров это одно из первых дел, которое нужно исследовать при отладке, чтобы выяснить, почему z-index не работает. [3]
Как и все другие свойства CSS, его можно задать с помощью JavaScript , используя следующий синтаксис:
объект.стиль.zIndex = ' 1 ' ;