CSS'de yıldız önceliği olan bir özellik ne anlama gelir?


85

Bugün bir css dosyasına bakıyordum ve aşağıdaki kural kümesini buldum:

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;
}

Yıldız, * dolgu ve * satır yüksekliğinde ne anlama geliyor?

Teşekkürler.

Yanıtlar:


98

Bu, "alt çizgi saldırısı" ile aynı çizgide olan "yıldız özelliği saldırısı" dır. IE'nin görmezden geldiği özellikten önce gereksiz dosyaları içerir (* IE 7'ye kadar, _ IE 6'ya kadar çalışır).


7
Teşekkürler! Ve "star property hack" konusuna baktım
Majid Fouladpour

1
css hack'leri kullanmak yerine koşullu yorumları deneyebilirsiniz, yani quirksmode.org/css/condcom.html formu daha fazla bilgi için.
Capi Etheriel

Safari (7.0.1) ve ondan önceki sürümlerin (doğrulanamaz) yıldız özelliği hackini kullanırsanız konsol uyarıları atacağına dikkat edilmelidir.
Jim

RIP IE7 ve bu tür 'düzeltmeler'.
ChristoKiwi

not: "Koşullu yorumlar HTML yorum yapısını kullandığından, yalnızca HTML dosyalarına dahil edilebilir, CSS dosyalarına dahil edilemez" quirksmode.org/css/condcom.html
George Birbilis

32

CSS'de mi? Hiçbir şey değil; bu bir hatadır.

Internet Explorer'ın bazı sürümlerindeki hatalar nedeniyle, geçersiz özellik adını doğru bir şekilde yok saymazlar, bu nedenle bu, bu tarayıcılara özgü CSS sağlamanın bir yoludur.

Koşullu yorumları kullanmak daha net ve daha güvenli.


2
Aslında. Geçerli CSS olmayan CSS korsanlarından kaçınılmalıdır; gelecekteki bir tarayıcının onlarla ne yapacağını asla bilemezsiniz.
bobince

@bobince bu yorumu geçmişte yaptığınızı fark ettim, ancak şimdi CSS ayrıştırma algoritmasının çok katı olduğu ve tarayıcıya bu tür kuralları sessizce göz ardı etmesini söylediği için gelecekteki her tarayıcının bunu nasıl yorumlayacağından kesinlikle emin olabiliriz.
mgol

1
@m_gol - Hayır yapamayız. *Bir özelliğin öncesinin anlamı hakkında gelecekteki bir CSS spesifikasyonunun ne söyleyeceğini bilmiyoruz . Bir anlam kazanırsa, mevcut tarayıcılar uzantının güvenli bir şekilde eklenmesine izin vererek onu yok sayacaktır. "Görmezden gelin" kuralının amacı budur.
Quentin

8

Yıldız işareti, CSS'de geçerli bir joker karakterdir. Tek başına kullanılması, aşağıdaki CSS özelliklerinin DOM'daki tüm öğe düğümlerinde kullanılacağı anlamına gelir. Misal:

*{color:#000;}

Yukarıdaki özellik, tüm DOM öğelerine uygulanacak ve böylece CSS'deki doğal basamaklandırmayı ortadan kaldıracaktır. Yalnızca, hedeflemenin benzersiz bir tanımlayıcı referansının başladığı yerde DOM öğelerini özel olarak etiketleyerek geçersiz kılınabilir. Misal:

#uniqueValue div strong{color:#f00;}

Yukarıdaki özellik, joker karakteri geçersiz kılar ve "uniqueValue" id öznitelik değerine sahip bir öğenin içindeki bir div'de meydana gelen tüm güçlü öğelerin metnini oluşturur.

İlk örnek gibi evrensel olarak uygulanan bir joker karakter kullanmak, sıfırlama stil sayfası yazmak için hızlı ve kirli bir yöntem olabilir. Hızlı ve kirli çünkü joker karakterden sonraki sunumun ayrıntılı tanımı, muhtemelen aşırı derecede şişirilmiş bir stil sayfası oluşturacaktır. Joker karakteri kullanacaksanız, aşağıdaki gibi daha spesifik olarak kullanmanızı öneririm:

* strong{color:#f00;}

Yukarıdaki örnek, benzersiz bir tanımlayıcıyla belirtilmeyen diğer CSS özelliklerinden bağımsız olarak tüm güçlü öğelerin metnini kırmızı yapar. Bu, "! Önemli" bildirimini kullanmaktan çok daha güvenli olarak kabul edilir, çünkü beyannamenin, amaçlanan davranışların doğal işlevselliğine müdahale ettiği ve bir bakım kabusu olduğu bilinmektedir.

Örneğinizdeki yıldız işaretleri, özellik bildirimlerinde, kaşlı ayraçların içine giren kodda göründükleri için yanlış yerdedir ve bu muhtemelen bir hataya neden olacaktır.


4
Doğru cevap olmasa bile, aradığım şeyi yanıtlıyor
Steve

4

Bu, IE7 için bir hack.

Bunu yazarsan:

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

W3C Standardı <div class="test"></div>HTMLElement'e uyan tüm gezginlerde a var z-index: 1ama IE7 için bu eleman a z-index: 2.

Bu standart değil.

W3C Standardı ile aynı şeyi elde etmek için şu adımları izleyin:

  • Bazı Internet Explorer Koşullu Yorumu ekleyin (bu, diğer tüm gezginler için basit bir HTML Açıklamasıdır, dolayısıyla bu standart bir yoldur).

    <! - [IE 7]> <html lang = "fr" class = "ie7"> <! [endif] ->

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

Ve önceki kuralları şu şekilde kullanın:

.test {
    z-index: 1;
}
.ie7 .test {
    z-index: 2;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.