One of the biggest reasons for this issue is that sites try to load all of their materials in the fastest way possible, which can have the unintended effect of some content arriving on the end user's computer before others. Luckily, browsers have a built-in JavaScript function that can be used to get around this issue entirely.
The primary means of circumventing this problem involves the animation-play-state property. Since this property informs the browser of when content is playing or paused, it can be modified to say it's paused while content is still be loading on the site. As long as you set up a js-loading class beforehand, and then remove it once everything is fully loaded, then you can easily set up the animation-play-state to only switch into play mode once the js-loading class has been removed.
Although this fix can help out most sites display better on a variety of browsers, there are still a few potential risks. The biggest issue is that JavaScript itself is not always properly enabled on an end user's computer. Regardless of whether they have it disabled on purpose, or due to an interaction with another plug-in, any fixes that involve JavaScript are by their nature a little unreliable. Despite these risks, the fix itself is reliable enough that you can trust it to perform well under most circumstances.