I just want to ask if I understand something wrong.
Here is a Fiddle
<table> <th style="position: relative; width: 50px; height: 100px"> <div style="position: absolute; top: 0px; left 0px; width: 100%; height: 100%"> <!-- Here you can add z-index to fixt this issue --> <div style="width: 100%; height: 50%; border: solid black 1px; background-color: red"></div> <div style="width: 100%; height: 50%; border: solid black 1px; background-color: green"></div> </div> <div style="height: 50%"> <input type="checkbox"> </div> <div> <input type="checkbox" style="opacity: 0.9; cursor: pointer"> </div> </th> </table> The issue is that both checkboxes are under a div that has parent element with position absolute, but second checkbox is over the div because it has an opacity. Basically if a checkbox has any opacity 0 - 0.9, it is over the div. If the opacity is set to 1 or there is no opacity property, it is under the div.
I thought it would be some browser issue but it is pretty browsers-wide behavior FF, Chrome, Edge. I know I can fix that with z-index property to set e.g. 1 to element with absolute position but my question is: Have I missed something or don't I understand something well and this behavior is correct?