Хорошо, я думаю, что ваша проблема, вероятно, связана с отсутствием понимания того, как работает z-index. Свойство z-index относится только к элементам на том же уровне в иерархии DOM . Другими словами, если у вас есть:
<ul id="a">
<li id="b">b</li>
<li id="c">c</li>
</ul>
<div id="d"></div>
, а "b" и "c" имеют такой стиль, что они перекрываются, z-index определит, какой из них окажется сверху. Однако, если «c» и «d» перекрываются, «d» всегда будет на вершине, независимо от того, каков z-индекс c, потому что элементы, которые находятся ближе к корневому узлу DOM, всегда будут появляться над элементами, которые вложены глубже .
Так что, пока "subnNav" является дочерним для "topNav", я не думаю, что есть какой-либо способ сделать так, чтобы он охватывал содержимое своего родителя. Другими словами, насколько я знаю, для этой проблемы не существует обходного пути, кроме как сделать так, чтобы «subNav» не был дочерним по отношению к «topNav».
(ПРИМЕЧАНИЕ. С учетом всего сказанного, CSS не прост, так что, возможно, есть какой-то способ получить желаемый эффект, о котором я не знаю. Все, что я могу сказать, это то, что, исходя из моего понимания z -index и мои довольно хорошие общие знания CSS, я точно не знаю.)