CSS defines style, HTML defines the semantics. The semantics of a div or an h1 don't change if you declare them inline in your CSS. So there is nothing wrong putting inline elements (styled as block) inside block elements.
HTML5 blurs this further as you can now wrap pretty much anything with <a>.
http://www.positioniseverything.net/explorer/doubled-margin....
CSS defines style, HTML defines the semantics. The semantics of a div or an h1 don't change if you declare them inline in your CSS. So there is nothing wrong putting inline elements (styled as block) inside block elements.
HTML5 blurs this further as you can now wrap pretty much anything with <a>.