2013-08-28 100 views
5

我在td中有span标记。 td有一个带CSS的类来将text-decoration设置为underline,而spantext-decoration设置为none。我期望span中的文字不会被加下划线,但由于某些原因,它是。为什么?td内的跨度不会覆盖td样式

.u { 
 
    text-decoration: underline; 
 
} 
 

 
.no-u { 
 
    text-decoration: none !important; 
 
}
<table> 
 
    <tr> 
 
     <td class="u"> 
 
      <span class="no-u" style="text-decoration: none !important;">My Text</span> 
 
     </td> 
 
    </tr> 
 
</table>

+6

跨度没有下划线;表格单元格仍然具有下划线。换句话说,下划线被应用于单元格,而不是跨度,因此您对跨度的规则没有明显的影响。 – j08691

+0

阅读@ j08691评论,只是尝试在跨度上设置'text-decoration:overline;',你会看到* underlne *和* overline *在一起:http://jsfiddle.net/hashem/mfV5V/3/ –

+0

你可能会发现这个主题很有用:http://stackoverflow.com/questions/7113520/text-decorationnone-doesnt-remove-text-decoration –

回答

0

按照CSS2规范,http://www.w3.org/TR/CSS21/text.html#lining-striking-props

对于建立一个行内格式化上下文块容器,装饰将传播到包装全部在流行内孩子的匿名内联元素的块容器。

这意味着,任何文本和类似<b><em><span>任何内嵌元件都包裹在一个匿名行内框在其上应用的文本装饰。

此外,对于子内联元素,您可以应用另一个文本修饰,允许您在文本跨度上显示下划线和上划线。在这种情况下,下划线涂在一个匿名行内框上,而上划线涂在第二个(嵌套)匿名行内框上。

在此示例中,td元素充当块容器。但是,这不适用于inline-blocks

看到演示在:http://jsfiddle.net/audetwebdesign/MSUHx/