问题
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.net/sasidhar/DTpEa/
回答1:
If 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.net/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>
回答2:
Here is a correct variant http://jsfiddle.net/rTUDN/
<div>
<span class='c1'>Home</span>
<sup id='id1'>[2]</sup>
</div>
.c1
{
text-decoration:underline;
}
#id1
{
text-decoration:none;
}
回答3:
How about underlining the sup in the same color as your background? The span would be underlined and the sup underlining would overlay it.
回答4:
http://jsfiddle.net/sasidhar/eYXhx/1/
回答5:
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;
}
回答6:
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?
来源:https://stackoverflow.com/questions/7113520/text-decorationnone-doesnt-remove-text-decoration