A bit late to the party, but hopefully it is still useful to people.
Using position: absolute can sometimes cause some problems to read from the screen, as the DOM layout may not match the visual order. VoiceOver can sometimes decide that it makes no sense to read it first (or at all).
In this particular case, you can simply set the desired height to a red <div> using overflow:scroll , and everything will be fine and should be readable and scrollable.
As a more general rule, try to keep the visual order in accordance with the DOM order, using float to slightly change the layout.
There are obviously rules, it is dictated somewhere how and why this happens, but they are related in the Apple code and change a lot between versions.
source share