CSSでスター付きプロパティはどういう意味ですか?


85

今日cssファイルを調べていたところ、次のルールセットが見つかりました。

div.with-some-class {
    display:block;                   
    margin:0;
    padding:2px 0 0 0;
    *padding:1px 0 0 0;
    font-size:11px;   
    font-weight:normal;
    *line-height:13px;
    color:#3D9AD0;
}

* paddingと* line-heightで星はどういう意味ですか?

ありがとう。

回答:


98

これは、「アンダースコアハック」と同じ方針の「スタープロパティハック」です。IEが無視するプロパティの前にジャンクが含まれます(*はIE 7まで、_はIE 6まで機能します)。


7
ありがとう!そして、私は「スタープロパティハック」を調べて、Ed Eliotによるこの明確で包括的な投稿を見つけました:「CSSのヒント:IE 5.x、6、7を別々にターゲットにする」ejeliot.com/blog/63
Majid Fouladpour 2009年

1
cssハックを使用する代わりに、条件付きコメントを試すこともできます。つまり、quirksmode.org / css /condcom.htmlフォームの詳細を確認してください。
Capi Etheriel 2010年

スタープロパティハックを使用すると、Safari(7.0.1)およびそれ以前のバージョン(検証できません)がコンソール警告をスローすることに注意してください。
ジム

RIPIE7とこれらの種類の「修正」。
ChristoKiwi 2017

注:「条件付きコメントはHTMLコメント構造を使用するため、CSSファイルではなくHTMLファイルにのみ含めることができます」quirksmode.org/css/condcom.html
George Birbilis

32

CSSでは?何もありません。それはエラーです。

Internet Explorerの一部のバージョンにはバグがあるため、無効なプロパティ名が正しく無視されないため、これはそれらのブラウザーに固有のCSSを提供する1つの方法です。

ただし、条件付きコメントを使用する方が明確で安全です。


2
確かに。有効なCSSではないCSSハックは避ける必要があります。あなたは将来のブラウザがそれらで何をするかもしれないかを決して知りません。
bobince 2009年

@bobince過去にそのコメントをしたことは承知していますが、CSS解析アルゴリズムが非常に厳密であり、そのようなルールを黙って無視するようにブラウザに指示するため、将来のすべてのブラウザがこれをどのように解釈するかを完全に確信できます。
mgol 2016年

1
@m_gol —いいえ、できません。*プロパティの前のaの意味について、将来のCSS仕様で何が示されるかはわかりません。それが意味を持っている場合、現在のブラウザはそれを無視し、拡張機能を安全に追加できるようにします。それが「無視しなければならない」ルールのポイントです。
クエンティン

8

アスタリスク文字は、CSSで有効なワイルドカードです。これを単独で使用すると、DOM内のすべての要素ノードに対して次のCSSプロパティが使用されます。例:

*{color:#000;}

上記のプロパティはすべてのDOM要素に適用されるため、CSSの自然なカスケードが無効になります。これは、そのターゲティングが一意の識別子参照を開始するDOM要素を具体的にタグ付けすることによってのみオーバーライドできます。例:

#uniqueValue div strong{color:#f00;}

上記のプロパティはワイルドカードをオーバーライドし、id属性値が「uniqueValue」の要素内のdivで発生するすべての強力な要素のテキストを作成します。

最初の例のように、普遍的に適用されるワイルドカードを使用することは、リセットスタイルシートを作成するための迅速で汚い方法になる可能性があります。ワイルドカードの後のプレゼンテーションの詳細な定義は、非常に肥大化したスタイルシートを作成する可能性があるため、迅速で汚いです。ワイルドカードを使用する場合は、次のように、より具体的に使用することをお勧めします。

* strong{color:#f00;}

上記の例では、一意の識別子で指定されていない他のCSSプロパティに関係なく、すべての強力な要素のテキストが赤になります。これは、「!important」宣言を使用するよりもはるかに安全であると考えられています。この宣言は、意図した動作の自然な機能に干渉することが知られており、メンテナンスの悪夢です。

例のアスタリスクは、プロパティ宣言、中括弧内にあるコード内にあるように見えるため、間違った場所にあり、エラーが発生する可能性があります。


4
それが正しい答えでなくても、私がグーグルで検索したものに答えます
Steve

4

これはIE7のハックです。

あなたがこれを書くならば:

.test {
    z-index: 1;
    *z-index: 2;
}

W3C標準<div class="test"></div>HTMLElementを尊重するすべてのナビゲーターにはがありますが、z-index: 1IE7の場合、この要素にはz-index: 2。があります。

これは標準ではありません。

W3C標準で同じことを実現するには、次の手順に従います。

  • Internet Explorerの条件付きコメントを追加します(これは他のすべてのナビゲーター用の単純なHTMLコメントなので、標準的な方法です)。

    <!-[IE7の場合]> <html lang = "fr" class = "ie7"> <![endif]->

    <!-[if gt IE 7]> <!-> <html lang = "fr"> <!-<![endif]->

そして、次のような前のルールを使用します。

.test {
    z-index: 1;
}
.ie7 .test {
    z-index: 2;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.