Michael_B is correct about display: none. The element is not in the flow of your DOM until it becomes displayed. As it sounds like you've discovered, different browsers handle the visibilityproperty differently.

If what you are trying to do is merely display the text under the photos on hover without having the surrounding content "bounce", a really easy trick is to put the text in the flow of the document wherever you want it to be displayed and style it with color: transparent.

So, without being able to see your HTML and based solely on your provided code, a possible solution would look like this: