Consider the following code HTML:
<span class='c1'>Home<sup id='id1'>[2]</sup></span>
CSS:
.c1
{
text-decoration:underline;
}
#id1
{
text-decoration:none !important;
}
Now I expected Home
to have an underline while the superscript [2]
doesn't have the underline. But it so happens that the superscript is also getting the underline. What am i missing here??
/
Consider the following code HTML:
<span class='c1'>Home<sup id='id1'>[2]</sup></span>
CSS:
.c1
{
text-decoration:underline;
}
#id1
{
text-decoration:none !important;
}
Now I expected Home
to have an underline while the superscript [2]
doesn't have the underline. But it so happens that the superscript is also getting the underline. What am i missing here??
http://jsfiddle/sasidhar/DTpEa/
Share Improve this question edited Aug 18, 2011 at 20:38 sasidhar asked Aug 18, 2011 at 20:10 sasidharsasidhar 7,75216 gold badges51 silver badges78 bronze badges6 Answers
Reset to default 6If you think about it, the sup
isn't underlined. but the span
still is. Since the sup
is inside the span
, you see the underline which appears to be sup
's underline.
Consider this demo: http://jsfiddle/mrchief/DTpEa/24/
You'll see that the id1
css does take precedence, but you still see the underline which is that of the span
.
To solve it, have the sup
outside of the span
:
<span class='c1'>Home</span><sup id='id1'>[2]</sup>
Here is a correct variant http://jsfiddle/rTUDN/
<div>
<span class='c1'>Home</span>
<sup id='id1'>[2]</sup>
</div>
.c1
{
text-decoration:underline;
}
#id1
{
text-decoration:none;
}
How about underlining the sup in the same color as your background? The span would be underlined and the sup underlining would overlay it.
http://jsfiddle/sasidhar/eYXhx/1/
The trick is to add
display: inline-block;
to the object you want to not have the same text-decoration, as below:
.c1
{
text-decoration:underline;
}
#id1
{
display: inline-block;
text-decoration:none !important;
}
It turns out that text-decoration is special, (and especially annoying) in that it doesn't cascade like other properties.
See: How do I get this CSS text-decoration override to work?