現在、クリアフィックスについて勉強しているのですが、分からないことがあるので教えてください。

↓のサンプルの.div3:afterを使って.div4の回り込みを解除しようとしているのですが、
.div3のdisplayの値がinline-blockの時だけクリアフィックスが効きません。

inlineやblockの時は効いているのですが、この現象はなぜ起っているのでしょうか。
詳しい方、教えてください。

https://jsfiddle.net/7b9hc8Lc/