Display block without 100% width

Solution 1:

Use display: table.

This answer must be at least 30 characters; I entered 20, so here's a few more.

Solution 2:

If I'm understanding your question properly, the following CSS will float your a below the spans and keep it from having a 100% width:

a {
    display: block; 
    float: left; 
    clear: left; 
}