2012-05-07 9 views
3

CSS:CSSラインスルーは、ネストされたスパンで無効にされていない

ol { 
    margin: 0 30px; 
} 
    li { 
     margin: 15px 0; 
    } 
    li.done { 
     text-decoration: line-through; 
    } 
    li.done span { 
     text-decoration: none; 
     background: #ff0; 
    } 

HTML:

<ol> 
    <li class="done">Hello <span>World</span></li> 
    <li>World</li> 
</ol> 

JSFiddleデモ:http://jsfiddle.net/pZye7/5/。そして、JSFiddleに何か変わったことがあっても、順序付きリストの数字は表示されません。

私の要件:「World」という単語には、その上にラインスルーがあってはなりません。

+1

かなり奇妙です。そしてそれはクロスブラウザです。 Chrome、FF、IE9 jsFiddle "oddity"について:* Normalized CSS *のチェックを外すと、それらが表示されます。これをチェックすると、リセットされたCSSがアクティブになります。 – kapa

+2

可能な複製http://stackoverflow.com/questions/4481318/css-text-decoration-property-cannot-be-overridden-by-child-elementとhttp://stackoverflow.com/questions/1823341/how- do-i-get-this-css-text-decoration-override-to-work – BoltClock

+0

@bažmegakapa&BoltClock両方の情報をありがとうございます。 – KBN

答えて

4
li.done span { 
    text-decoration: none; 
    background: #ff0; 
    display: inline-block; /* This solved the problem.*/ 
} 

理由:不明な

+4

理由は上記のコメントにリンクしている2つの複製に記載されています。子供の中で親のテキスト装飾を元に戻すことはできません。 – BoltClock

+0

@BoltClock、情報ありがとうございました – KBN