There are many reasons CSS sucks, but here are the main two:
CSS relies on hierarchy for positioning, visibility & property inheritance. Therefore, it cannot be separated from the markup & interaction like some HTML purists suggest.
When positioning elements, one of two options can be used:
In the flow, which means automatic height & collection of inline assets into blocks, but very hard to tweak the default decisions.
Out of the flow, which more or less forces use of fixed dimensions for anything positioned this way.
If you still think CSS is awesome, try this: In a large text box, position a fixed-dimension image at the bottom-right, such that text will wrap around it.
I hope to further look into the workings of CSS in future posts