Вы в итоге разобрались с контекстами наложения? Просто вроде все понятно, но все равно какой то сумбур в голове. Надеюсь пройдет со временем и опытом. За статью спасибо - полезная, наверное одна из лучших на русском языке Спасибо за интерес - да, более-менее разобрался. Ссылку на тему думал давать или нет, но решил всё же дать, хотя я и не уверен что стоит вникать во все написанные там рассуждения, но может что-то окажется полезным... Основная идея такая: если Вы хотите чтоб что-то одно перекрывало что-то другое, то они должны находится в одном контексте наложения (по-умолчанию присутствует только один контекст наложения - корневой). Поэтому если Вам нужно поднять какой-то позиционированный элемент выше остальных, Вы просто назначаете этому элементу z-index и всё. Основная трудность возникает тогда, когда нам нужно чтоб дочерний элемент оказался ниже родительского, в случае если родительский уже участвует в наложении по z-плоскости, поскольку все его дочернии элементы будут выше него и прямого способа расположить какой-либо из них ниже я не знаю. Поэтому задачу нужно свести, так или иначе, к добавлению z-index'ов различным дочерним элементам. Тогда, участвуя в одном контексте наложения, они позиционируются в одной z-плоскости, в соответствии со своими значениями. Если же у родителя нет подходящего дочернего элемента, которому бы он мог "доверить" перекрытие другого дочернего элемента, то можно использовать, например, псевдоэлемент, которому назначаются все необходимые свойства, например блочный статус, размер равный размеру родителя и так далее, и присваивается нужный z-index. Псевдоэлемент будет иметь статус дочернего по отношению к своему родительскому элементу и сможет участвовать в позиционировании на z-плоскости, на ряду с другими дочерними элементами.