As the question indicates, if I have some text that I want to add in the HTML then when should I use <p>
and when should I use <span>
?
views:
166answers:
9Semantically, you use <p>
tags to indicate paragraphs. <span>
is used to apply CSS style and/or class(es) to an arbitrary section of text and inline elements.
Semantically speaking, a p is a paragraph tag and should be used to format a paragraph of text. A span is an inline formatting change that isn't handled semantically.
Span is completely non-semantic. It has no meaning, and serves merely as an element for cosmetic effects.
Paragraphs have semantic meaning - they tell a machine (like a browser or a screen reader) that the content they encapsulate is a block of text, and has the same meaning as a paragraph of text in a book.
A practical explanation: By default, <p> </p>
will add line breaks before and after the enclosed text (so it creates a paragraph). <span>
does not do this, that is why it is called inline.
A span is an inline formatting element that does NOT have a line feed above or below.
A p is a block element that HAS an implied line feed above and below.
The <p>
tag is a p
aragraph, and as such, it is a block element (as is, for instance, h1
and div
), whereas span
is an inline element (as, for instance, b
and a
)
Block elements by default create some whitespace above and below themselves, and nothing can be aligned next to them, unless you set a float
attribute to them.
Inline elements deal with spans of text inside a paragraph. They typically have no margins, and as such, you cannot, for instance, set a width
to it.
you should keep in mind that HTML is intended to DESCRIBE the content it contains.
so if you wish to convey a paragraph, then do so.
your comparison isn't exactly right though. the more direct comparison would be "when to use a div instead of a p?" as both are block level elements.
a span is inline, much like an anchor, strong, emphasis, etc, so bear in mind that by it's default nature in both html and in natural writing, that a paragraph will cause a break before and after itself, like a div.
sometimes when styling things - inline things - a span is great to give you something to "hook" the css to, but it is otherwise an empty tag devoid of semantic or stylistic meaning.
The p tag denotes a paragraph element. It has margins/padding applied to it. A span is an unstyled inline tag. An important difference is that p is a block element when span is inline, meaning that <p>Hi</p><p>There</p>
would appear on different lines when <span>Hi</span><span>There</span>
winds up side by side.
<span> is an inline tag, a <p> is a block tag, used for paragraphs. Browsers will render a blank line below a paragraph, whereas <span>s will render on the same line.