View Full Version : text display anomoly

11-07-2010, 08:11 AM
I have a little piece of text in HTML code which - thanks to a large external .js routine that I can't change - is always underlined because it is a link.

But I want to make only the first part of this text a link and "unlink" the remaining text.

<a href="#">Messages<span style='color:black;font-style:italic;text-decoration:none;cursor:default'> (enrolled only)</span></a>

To simulate the overall link, I have added the <a href="#">...</a> tag.

The problem is that it displays well in IE, but in the other browsers, the text-decoration: none in the span is effectively ignored.

How can I make it display exactly as in does in IE in FF, Chrome, and Safari etc?

11-07-2010, 10:13 AM
The trick is to remove the text-decoration for the a tag and only apply it when required. Using your example this becomes:

<a href="#" style="text-decoration:none"><span style="text-decoration:underline">Messages</span><span style='color:black;font-style:italic;cursor:default'> (enrolled only)</span></a>

Major Payne
11-08-2010, 09:37 AM
You can use inline CSS for the link or add the CSS style for the link as an id on an external CSS. Additionally...

You may not know it, but a link has four different states that it can be in. CSS allows you to customize each state. Please refer to the following keywords that each correspond to one specific state:

* link - this is a link that has not been used, nor is a mouse pointer hovering over it
* visited - this is a link that has been used before, but has no mouse on it
* hover - this is a link currently has a mouse pointer hovering over it/on it
* active - this is a link that is in the process of being clicked

Using CSS you can make a different look for each one of these states:

a:link {

a:visited {

a:hover {

a:focus {
outline: none; /* remove the dotted outline added by Firefox */

a:active {

a:link {color: #090;}
a:visited {color: #999;}
a:hover {color: #333;}
a:focus {color: #333;}
a:active {color: #090;}

Order matters. If "a:active" precedes "a:hover", the effects in "a:hover" will take precedence. So, in this example, you would not see the color change when the user clicks down on a link.

Pseudo Classes

You can set links contained in different parts of your web page to be different colors by using the pseudo class. For example, lets say you want your links in the content area to have a different color then the links in the left or right column of your webpage.

You can do this in the following fashion:

#pseudo_content a:link {color: #090;}
#pseudo_content a:visited {color: #999;}
#pseudo_content a:hover {color: #333;}
#pseudo_content a:focus {color: #333;}
#pseudo_content a:active {color: #090;}

Now assuming that you have your main content in a division named "content" all links within that division will now be styled by this new style selector. Should your selector have a different name, just change the #pseudo_content selector to match your division name.

Then for the links in a column you could use the following:

#pseudo_column a:link {color: #090;}
#pseudo_column a:visited {color: #999;}
#pseudo_column a:hover {color: #333;}
#pseudo_column a:focus {color: #333;}
#pseudo_column a:active {color: #090;}

Once again, this assumes the name of the column division, just change the name to match yours.

This same method can be accomplished by declaring a class instead of an id.

a.pseudo_column:link {color: #090;}
a.pseudo_column:visited {color: #999;}
a.pseudo_column:hover {color: #333;}
a.pseudo_column:focus {color: #333;}
a.pseudo_column:active {color: #090;}

Though in this case you will need to add a class to each link

<a class="pseudo_column" href="" title="">some link text</a>

But, there is still yet an easier way

.pseudo_column a:link {color: #090;}
.pseudo_column a:visited {color: #999;}
.pseudo_column a:hover {color: #333;}
.pseudo_column a:focus {color: #333;}
.pseudo_column a:active {color: #090;}

Then in the (X)HTML file

<div class="pseudo_column">
<a href="" title="Link Description">Link Text Description</a>