2011-07-23 8 views
27

私はエリック・メイヤーのCSSのリセットを読んこれを見た:`コンテンツ:` `コンテンツ対「」:NONE`

blockquote:before, blockquote:after, 
q:before, q:after { 
    /* ? */ content: ''; 
    /* ? */ content: none; 
} 
私はいくつかのブラウザが content: ''サポートすることを前提としてい

といくつかのcontent: none、これが事実ですか?そしてどのブラウザがどちらをサポートしていますか?

答えて

33

マイヤーは、そのバージョンのブロッククォート/ qリセットスタイルでポールチャップリンを賞賛します。

チャプリンのpostには、次のスタイルブロックが含まれています。アノテーションが付いています。

blockquote, q 
{ 
    quotes: none; 
} 

/* 
Safari doesn't support the quotes attribute, so we do this instead. 
*/ 
blockquote:before, blockquote:after, q:before, q:after 
{ 
    /* 
    CSS 2; used to remove quotes in case "none" fails below. 
    */ 
    content: ""; 
    /* 
    CSS 2.1; will remove quotes if supported, and override the above. 
    User-agents that don't understand "none" should ignore it, and 
    keep the above value. This is here for future compatibility, 
    though I'm not 100% convinced that it's a good idea... 
    */ 
    content: none; 
} 

それを煮詰めるするには:ほとんどのブラウザの現在のバージョンでは、単に:before:afterセレクタを使用する必要がなくなりquotes: noneスタイルをサポートしています。奇妙な人はSafari/WebKitで、quotes: noneを尊敬しませんでした。これを解決する次の方法は:before/:after疑似要素で行われましたが、WebKitではその書き込み時点でcontent: noneもサポートされていなかったので、content: ""が必要でした。

しかし、現在のWebKitブラウザ(Safari 5.1とChrome 12)のquick testは、quotes: noneが両方でうまく動作することを示しています。 content: none bug against WebKitはなんらかの理由でまだオープンしていますが、bug for the quotes propertyはかなり最近閉鎖されています。

短い話ですが、余分なスタイルが古いバージョンのSafari(場合によってはChrome)をサポートするように見えます。彼らがサポートを得たときに正確に釘付けにするのはもう少し難しいですが、すべてのブラウザの現在のバージョンはquotes: none(そしてcontent: none)をうまく処理しているようです。

+0

したがって、 'content:none'を使うのに本当の利点はありませんか? –

+9

'content:none'と' content: "" 'は全く同じではありません。 'content:none'は' before'または 'after'疑似要素が生成されることを明示的に防止するためのものです(実際にはコンテンツを生成した別のスタイルをオーバーライドするためにのみ使用されます)。しかし、彼らは空です。 * real *のメリットについては、 ':before:や':after'のスタイルを組み合わせると、違いが見えるようになりますが(パディングや背景色のように)、純粋さや正確さの方​​がはるかに低いでしょう。とにかく、ブラウザをサポートするために 'content:none'を持つことには害はありません。 –

+0

私は前のスタイルを上書きするときにこれを見つけたと言います。私はコンテンツが以前のスタイルのいくつかを間違いなく持っていて、 "none"というコンテンツは私が(上記のコメントで示唆したように)テストするのに使うipadではうまくいきませんでした。私は "ベルトとブレース"オーバーライド(すべてのスタイルをリセットする必要はありません)として擬似要素に表示なしを使用しました。 – user1010892

関連する問題