I still don’t agree with the accepted answer, because according to the critical rendering path nothing could be painted on a screen under normal circumstances until the render tree (DOM + CSSOM) is build.
I find that this Google article is somewhat confusing at the first glance but it becomes less contradictory if we take a look carefully at the following statement:
“What would happen if we try to render a typical page without blocking rendering on CSS?”. (Then NY Times FOUC as example of behaviour without blocking rendering follows.)
The thing is historically FOUC happened for different reasons in different browsers versions and on different circumstances.
For example according to this ancient article we could encounter FOUC in web kit if some JS attempted to access properties that have layout/style information.
Web Kit has the opposite behavior and will continue parsing a page
even after a style sheet directive has been encountered so that style
sheet and script loads can be parallelized. That way everything can be
ready for display much earlier.
The problem with this behavior is what to do when a script attempts to
access a property that involves having accurate layout/style
information to answer. Shipping Safari’s current behavior when this
happens is as follows: it will go ahead and lay out what it’s got even
though it doesn’t have the style sheet yet. It will also display it.
This means you see FOUC whenever a script tries to access properties
like scrollHeight or offsetWidth before the style sheet has loaded.
Therefore when we say “FOUC happens” there should be explications on
what circumstances and in what browser it happens, because it doesn’t
“just” happens everywhere.