<div> and <span> are just generic elements with no additional meaning outside of, "this is a block-level element" and, "this is an inline element" (respectively). The way most folks build websites today, they add classes to divs and spans to basically create custom elements, which they then position using whatever technique makes the most sense for their layouts. The reason people shy away from using tables for layouts is because while avoiding them can be complicated, using them is fuck all complicated, and adds a lot of cruft that's impossible to sift through. Honestly though it's not all that awful, since tables can actually do things cross-browser CSS can't do all that well. But I'll still throw away your resume if I see your sites use them for layout. I'd rather your stuff broke in everything but the latest Webkit nightlies. Floats were more or less intended to be for things like images and callouts / quotes in paragraphs, so that text could wrap around them elegantly. However since you can float any element it's now used for positioning, much like tables have been abused for positioning. If you try this though, learn the word "clearfix" since you'll be using it a lot.