To answer your first question bluntly, yes. If you are resorting to using empty div
s to style a page, you need to learn more about the features that CSS provides. Given enough thought, you should be able to set up appropriate margin
s, or line-height
s to make that happen. Or start working on a flexbox
layout.
And for your second question, all elements are basically the same. But we appropriate different semantics to provide meaning. Quoted from SO: What is the difference between HTML tags <div>
and <span>
?:
- But in modern HTML all elements are supposed to have meanings: a
<p>
is a paragraph, an <li>
is a list item, etc., and we're supposed to use the right tag for the right purpose -- not like in the old days when we indented using <blockquote>
whether the content was a quote or not.
- So, what do you do when there is no meaning to the thing you're trying to do? There's no meaning to a 400px-wide column, is there? You just want your column of text to be 400px wide because that suits your design.
- For this reason, they added two more elements to HTML: the generic, or meaningless elements
<div>
and <span>
, because otherwise, people would go back to abusing the elements which do have meanings.