Opacity менее 1 меняет относительную позицию элементов и может испортить настроение. Лень пересказывать - есть публикация на этот счет
https://philipwalton.com/articles/what-no-one-told...
А вообще z-index работает с absolute, fixed или relative;
И зависит от z-index'ов родительских элементов. Если у родителя z-index: 1 а у элементов на одном уровне с родителем выше значение, то дочерний блок хоть с z-index: 10000 не сможет перекрыть соседей родителя.