Fixing the 'read more' problem

Written by That Web Guy on 21st December 2009. 13 comments

Fixing the 'read more' problem
  • Avant Innovations
  • Advertise Here

In my continuing journey to be as anal as humanly possible regarding web standards, I thought it about time to look at one of my pet peeves - the 'read more' link, also commonly known as 'more info' and sometimes 'keep reading'.

You know what I'm talking about of course. The links like you see on the homepage of this very blog, where content is truncated and followed by a 'read more' link leading to the full article.

There's nothing wrong with this practice and in fact it it's an ideal way of fitting points of interest on a single page, especially when you need to preview a lot of content. But my only qualm is with the traditional implementation of such links (I'm a big offender from way back, but I'm making an effort to change!).

The problem is that 'read more' by itself is meaningless to a search engine and a screen reader. A site map of a typical homepage for our imaginary company below - let's call them CompanyX - which contains 'read more' links would look like this:

Looks strange, doesn't it? When a search engine spider examines your links, all those 'read more' links don't really help describe what they're about. And for those relying on screen readers, imagine how it sounds when that site map is read aloud. Not very useful is it?

The good news is it's very easy to rectify and it won't interfere with your design. Here's how.

<a href="">Read more <span>about CompanyX policies</span></a>

Now all you need to do is hide the span with a little CSS in your style sheet:

span { text-indent:-9999em; position:absolute }

So now your site map will look like this:

In one very simple step you've managed satisfy accessibility considerations and help improve the quality of your site map.

Too easy.

Is this worth sharing?

That Web Guy

About That Web Guy

That Web Guy (Mikey to his friends) is a veteran web designer based in Perth, Western Australia, and currently Design Director at Perth Web Design. When he's not XHTML'ing or messing around in Photoshop, Mikey can usually be found preaching web standards evangelism onto unsuspecting victims.

Feel free to send That Web Guy a message some time, follow him on Twitter, or make a donation.

Comments

Not a Member

Rachel

Nice tip.

Another alternative is to customise the 'read more' text for each article. Wordpress and others have plugins to make this super easy. If you're using modx a custom field will sort you out.

You could simply set up your blog to display "read more about [blog post title]". I usually advocate front-loading the key terms but I've not seen adverse results from this approach.

Monday 21st December 2009 | 10:15 AM Reply Comment URL Back to top

That Web Guy

That Web Guy

Responding to this comment by Rachel

Thanks Rachel

Monday 21st December 2009 | 10:23 AM Reply Comment URL Profile Back to top

Not a Member

Branigan

Super stuff. Makes sense when you think about it.

Monday 21st December 2009 | 10:26 AM Reply Comment URL Back to top

Rodney

Rodney

Nice work, Mike. I'll be using this one.

Monday 21st December 2009 | 10:30 AM Reply Comment URL Profile Back to top

Not a Member

Gary Barber

Hi Mike,

Nice reminder.

One of the points of expanding the semantic nature of the "Read More" text is to give it context for all readers.

People with the ability to scan the entire page (thats most of us) will have no issue in determining what the read more link is for. That's a given, one of the reasons they work and test so well - sadly. Yeah it is a sad fact that people do respond to "read more", "click here" and the like very well in testing.

However it all falls apart with anyone with a visual disability from screen zooming to screen readers. Here you need to know what the link is about. The more semantic information for the link the better.

Hence I would recommend against using display:none. In favour of moving the to be hidden text to the left off the visual screen.

Still better to have to full semantic meaning of the link. But business reality doesn't often allow for this.

Monday 21st December 2009 | 10:31 AM Reply Comment URL Back to top

That Web Guy

That Web Guy

Responding to this comment by Gary Barber

Thanks Gary.

That's something I've always wondered but can never find a clear answer on. I could understand a problem if display:none was used inline, but in an external style sheet is there still an issue?

Using the text-indent method would have the same effect unless I'm mistaken.

Monday 21st December 2009 | 10:37 AM Reply Comment URL Profile Back to top

Not a Member

Carlos

Responding to this comment by That Web Guy

Screen read will treat the page as if style sheet doesn't exist hence you not to use inline css for anything. Use text-indent or display-none or visibility:hidden if its in style sheet shouldn't matter for this method.

Monday 21st December 2009 | 10:42 AM Reply Comment URL Back to top

Not a Member

Gary Barber

Responding to this comment by That Web Guy

Mike,

Any property works the same, no matter where you reference it from, be that inline, embedded in the page or externally linked.

Display:none will appear to you and me to just remove the element. What it in fact does its more than just remove a visual display. The element is forced to not generate a box at all. Also any children can't generate a box. So it removes the element and its descendants from the scope of the readable DOM. Hence a search engine will not see a display:none element. And as extensive testing has shown the same goes for screen readers or even page reading software.

Hence it is established practice not to use display:none on small runs of text that you want a search engine to see, but want hidden to the general able bodied public.

However there are good cases to use display:none. Like large menu systems.

The text-indent property just moves the element off the visual page, but still on the virtual page. So it is readable as the box of the element has not been forced to collapse.

Monday 21st December 2009 | 10:53 AM Reply Comment URL Back to top

Not a Member

Gary Barber

Responding to this comment by Carlos

@carlos

Some braille readers tend to only read the page as it is presented, as raw semantic data. As did some of the older screen readers.

However current screen readers (like Jaws) are attached to a browser. What the they see (read) is what the browser outputs, So this includes javascript manipulation of style or content, css content inserts, and in this case removal.

Some screen readers also process the Aural media types and the related properties. However this is limited.

If an element doesn't have a box generated (see my previous comment) the reader can see then it will just ignore it as a non informational, visual only, element.

Yes you can screen readers can use javascript too.

Monday 21st December 2009 | 11:10 AM Reply Comment URL Back to top

Jasmine

Jasmine

I just wanted to say welcome back and I love what you've done with place.

Monday 21st December 2009 | 05:44 PM Reply Comment URL Profile Back to top

Not a Member

Stanze

Thanks web guy,

Keep these good ideas flowing. We watch with interest!

Stanze.

Monday 21st December 2009 | 05:49 PM Reply Comment URL Back to top

Not a Member

Angelina

I do the same thing but I hide the entire text bit and use a background image. But only when I need more control over the design (when a fancy button or font is needed) otherwise this is still a perfect solution.

Tuesday 22nd December 2009 | 06:36 AM Reply Comment URL Back to top

That Web Guy

That Web Guy

Responding to this comment by Stanze

Cheers for that Stanze.

@Angelina: That's perfectly acceptable and I do it sometimes for the exact same reasons.

Tuesday 22nd December 2009 | 08:22 AM Reply Comment URL Profile Back to top

FYI: You are currently not logged in. It's cool though - you can still comment. But only members get a profile page, access to the download section and they can pimp their own web sites. Feel free to register or Login now!

Your name:

Your comments:

Note: HTML tags are automatically stripped from comments.

Are you human?
Turing

Sorry, I have to ask. So what sort of animal is this? (Hint: you don't have to be perfectly specific)

Back to top

Login to That Web Guy Blog

Login

Not registered? | Forgot your Password? Cancel Login