HIZLI
TEKLİF AL

CSS'te Özgüllük

 

 

Sayfa Başlıkları

CSS'te Özgüllük / CSS Specificity

CSS'te bir HTML öğesine birden fazla çakışan CSS deklarasyonu varsa tarayıcı hangisini esas alacağını belirlemek için CSS Özgüllük/Specificity kuralını izler.

Id, Class ve Element Seçiciler Arasında Özgüllük

CSS te özgüllük | id>class>element

Temel Olarak id > .class > element

CSS te özgüllük | id>class>element


h1#title{color : red;}
h1.title{color : blue;}
h1{color : orange;}
                

<h1 id=”title” class=”title”>Sayfa Başlığı</h1>Sayfa Başlığı
                

Sonuç olarak yukarıdaki örneği inceledeğimizde id #title CSS seçicisi daha özgül ve ağır bastığı için class .title da belirtilen stil geçerli olmamıştır.

Bir Öğe İçerisindeki Elamnın Seçilmesi Durumu

CSS te özgüllük | id>class>element


div#main h1{color : red;}
div.main h1{color : blue;}
div h1{color : orange;}
div#main h1.title{color : green;}
                

<div id=”main” class=”main”>
    <h1 class=”title”></h1>
</div>
                

Yukarıdaki Örnekteki en Özgül CSS


div#main h1.title{color : green;}
                                    

Yukarıdaki örnek CSS konusunda yeni olan kişiler için biraz karmaşık gelebilir. Ama genel olarak baktığımızda temel mantık herzaman aynıdır. O yüzden endişe etmenize gerek yok.
Temel Mantık : id > .class > element
Burada sadece ekstra olarak id eleman içerisinde class ile eleman seçiliyor ve diğerlerine göre en özgül olan yani tarayıcının kabul ettiği kural oluyor.

Yukarıdaki Örneğin CSS Özgüllük Sıralaması;


div#main h1.title{color : green;} /* 01 En Özgül ve Tarayıcı Tarafından Kabul Edilen Stil Olacaktır.*/
div#main h1{color : red;}         /* 02 */
div.main h1{color : blue;}        /* 03 */
div h1{color : orange;}           /* 04 */
                

Aynı Özgüllükteki Class Seçiciler Arası Özgüllük

Aynı Değerdeki Classlar Arası Özgüllük

Aynı özgüllüğe sahip 2 CSS deklarasyonu var ise yukarıdaki örnekteki gibi, kodun en altında yer alan CSS deklarasyonuna ait stiller tarayıcı tarafından öncelikli belirlenir.


h1.red{color : red;}
h1.blue{color : blue;}
                    

<h1 class=”red blue”>Sayfa Başlığı Mavi Olacaktır</h1>
                    

.Class ve Element.Class Arasında Özgüllük

Aynı Değerdeki Classlar Arası Özgüllük

Sadece bir HTML öğesi için classname tanımladığında bu tanımdaki stiller genel bir classname tanımlamasına göre daha özgül olacak ve ağır basacaktır.
Çünkü h1.title seçicisi kullanıldığında bu tanım h1 elemanı için özel olarak atanmıştır ve genel .title class seçiciden daha üstün olacaktır.


h1.title{color : red;}
.title{color : blue;}
                

<h1 class=”title”>Sayfa Başlığı</h1>Sayfa Başlığı
                

Not: Yukarıdaki örnekte element.class kullanımının daha baskın olduğunu öğrendik, aşağıdaki kompleks uygulamada CSS'te özgüllük/specificity konusunu çok daha iyi kavrayacaksınız.

CSS Özgüllük Konu Kavrama Sorusu

Aynı Değerdeki Classlar Arası Özgüllük


h1.red {background-color: red;}
h1.yellow {background-color: yellow;}
#blue{ background-color: blue;}
.blue{ background-color: blue;}
div.main h1#blue.red.blue{ background-color: pink;} 
h1#blue{ background-color: blue;}
div h1#blue{ background-color: blue;}
div#main h1#blue{ background-color: indigo;}
div h1{ background-color: green; color:#fff;}
div.main h1#blue.red.blue.yellow{ background-color: orange;}
                    

<div id="main" class="main">
    <h1 class="yellow red blue" id="blue">This is heading 1</h1>
</div>
                    

CSS Özgüllük 1. Sorunun Cavabı

Aynı Değerdeki Classlar Arası Özgüllük

Cevap


div#main h1#blue{ background-color: indigo;}
                    

Yukarıdaki örneği bir tarayıcıda çalıştırdığınızda yukarıdaki cevabın doğru olduğunu göreceksiniz.
Önemli : En özgül CSS deklarasyonu olmasının sebebi hem dış kapsayıcısının id div#main hem de seçilen elemanın id h1#blue ile seçilmesinden kaynaklanmaktadır.

CSS Özgüllük 2. Sorunun Cavabı

Aynı Değerdeki Classlar Arası Özgüllük


/* 01 */ div#main h1#blue { background-color: #4b0082; } /* 01 En Özgül. Tarayıcı Bu stili kabul Eder */
/* 02 */ div.main h1#blue.red.blue.yellow { background-color: orange;} 
/* 03 */ div.main h1#blue.red.blue { background-color: pink;}
/* 04 */ div h1#blue { background-color: blue;}
/* 05 */ h1#blue { background-color: blue; }
/* 06 */ #blue { background-color: blue; }
/* 07 */ h1.yellow { background-color: yellow; }
/* 08 */ h1.red { background-color: red; }
/* 09 */ .blue { background-color: blue; }
/* 10 */ div h1 { background-color: green; color: #fff; }
                

Not : Yukarıdaki CSS örneğinde bir çok farklı durum için CSS özgüllük karşılaştırması yapılmıştır. Her CSS deklarasyonunu kendi arasında dğerlendirerek arasındaki farkı daha iyi anlayabilirsiniz.