We’ve got the <br /> tag all wrong. It’s time to make it right.
We all know the <br /> tag is used to insert a line break in HTML. But what we’ve been missing is that we were too often after something else. Let me explain.
Common reasons to use line breaks
Why would a web writer interrupt a passage of text with a forced line break? Here are a few possibilities.
- Trying to avoid an orphan
- Inserting a line break before a 2-word proper noun, like “American Airlines,” so the noun isn’t split
- Formatting content like a mailing address
The problem with line breaks (<br /> tags)
Forcing a line to break in a document that will be printed is a no-brainer. But web writing has different constraints that we shouldn’t ignore.
Copy on the web has the luxury and burden of being portable. That text can show up anywhere:
- in an e-mail message
- on some other web page
- in an RSS reader
- copied and pasted into a Tweet
- in a web browser on a mobile phone
This means that the line length you wrote your text for is simply not reliable. You need to consider how that text will show up in other places too, at unknown line lengths.
A line break may look fine on your screen, but it might look really awkward when that text appears somewhere else beyond your control.
Instead of splitting text, stick text together
Orphans
Avoid orphans especially where the text is most likely to appear, but relax. You can’t prevent them altogether.
Instead of inserting a line break, opt to rephrase the text to change the length and prevent the orphan. But realize that when that text appears elsewhere, it might just have an orphan.
You also have the option of a special white-space character called a non-breaking space. In HTML, it looks like this:
. When you put a non-breaking space between two words, those two words will always be on the same line of text.
2+ word proper nouns
If you want to be sure that “American Airlines” remains on the same line in body text, employ a sprinkle of CSS magic. In the markup, a corporate name should be contained within a span element, like this:
<span class="brand_name">American Airlines</span>
And then to make sure that those two words stay on the same line, add a line like this to your CSS file.
.brand_name {white-space: nowrap;}
That will prevent the brand name text from being split at the end of a line. Instead, both words will flip to the next line if there is not enough room for them on the current line of text.
Formatting content like mailing addresses
In this case, I’m actually okay with using <br /> tags. But, left to my own devices, I might use some different markup and some CSS instead.
Let’s say we have an address like this fictional one.
Samuel Clemens1835 Huckleberry Row
Hannibal, MO 63401
You could just put that text in an address element and use line breaks.
Or you could mark it up in the hcard microformat, and then think about styling it based on that markup. So, it might instead be coded like this.
<address class="vcard">
<span class="fn">Samuel Clemens</span>
<span class="street-address">1835 Huckleberry Row</span>
<span class="locality">Hannibal</span>,
<abbr title="Missouri" class="region">MO</abbr>
<span class="postal-code">63401</span>
</address>
And then a little bit of CSS like this would take care of the line breaks.
.vcard .fn,
.vcard .street-address{
display: block;
}
The point: we overuse line breaks because they don’t require any extra thought
Instead, let’s consider why we actually want a line break the next time we go to use one. There’s probably a better option once you realize that you don’t actually want to break a line of text, you really just want some of the text to stick together.
3 responses to “The problem with the line break (BR) tag”
Nice article, Davin.
Given the topic, I’m wondering about your thoughts on the wbr tag. What should the considerations be for its use?
Thanks. The WBR tag is, as far as I know, part of HTML 5 and questionably supported at this point.
At first glance, it seems like a cool idea. I presume you’d use it to override a stylesheet rule like white-space: nowrap to indicate that it actually is okay to break the line between those two words. Sort of like the soft hyphen entity () that says it’s okay to break with a hyphen if needed. Handy.
Now the question of if this sort of thing should be embedded in the markup or in the CSS is another discussion. 🙂
[…] I came across an interesting article written by Davin Granroth that talks about his opinions of when to use the br tag and other alternatives. […]