Menu

CSS Class Seçici ve ID Seçici (.class ve #id)

Class seçici (.ad) o class'a sahip her elemente, ID seçici (#ad) ise o id'ye sahip tek elemente stil verir. Söz dizimini, birden fazla ve zincirlenmiş class'ları, class ile id farkını, adlandırma kurallarını ve JavaScript ile class açıp kapatmayı öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Class seçici

Bir class seçici, bir nokta ve ardından gelen bir class adıdır. Element türü ne olursa olsun, class özniteliği o adı içeren her elemente stil verir.

Nokta yalnızca CSS'te görünür. HTML'de öznitelik noktasız olarak class="badge" yazılır. Class adları büyük küçük harfe duyarlıdır: .Badge, class="badge" ile eşleşmez.

Bir elemente birden fazla class

Bir element boşlukla ayrılmış istediği sayıda class taşıyabilir. Her biri kendi kurallarını getirir; varyantları küçük parçalardan böyle kurarsın:

Boşluksuz yazılan .btn.danger, iki class'a da sahip elementlerle eşleşir. Son span danger taşıyor ama btn taşımıyor, bu yüzden zincirlenmiş kural onu atlar.

Class seçici çeşitleri

SeçiciEşleştiği
.notenote class'ına sahip herhangi bir element
p.noteYalnızca note class'ına sahip <p> elementleri
.btn.primaryHem btn hem primary taşıyan elementler
.card .titleBir .card içinde herhangi bir yerdeki .title
.card > .titleEbeveyni .card olan bir .title
.a, .ba ya da b taşıyan elementler

Boşluklu ve boşluksuz yazım arasındaki fark, diğer birleştiricilerle birlikte CSS seçiciler sayfasında anlatılıyor.

ID seçici

Bir ID seçici, bir diyez işareti ve ardından gelen id'dir: #site-header, id="site-header" olan elemente stil verir. Bir id sayfada benzersiz olmalıdır, bu yüzden bir ID seçici tam olarak tek bir elementi hedefler.

Id'ler stil vermekten fazlasını yapar: href="#details" elemente kaydırır, <label for="email"> bir input'un id'sini gösterir ve JavaScript onu document.getElementById('details') ile bulur. Bir elemente id vermenin olağan nedeni budur; stil vermek içinse class daha iyi bir araçtır.

Class ve ID farkı

Class .nameID #name
Sayfa başınaBirçok elementTek element
Element başınaBirden fazla, boşlukla ayrılmışBir tane
Özgüllük(0,1,0)(1,0,0)
Link hedefi (URL'de #name)HayırEvet
En uygun olduğu yerStil vermekÇapalar, label'lar, JavaScript kancaları

Özgüllük farkı, class'larla stil vermenin pratik nedenidir. Tek bir ID, kaç tane olursa olsun class'ları yener, bu yüzden ID ile yazılmış bir kural yalnızca başka bir ID, inline bir stil ya da !important ile ezilebilir:

JavaScript ile class eklemek ve kaldırmak

Class'lar, JavaScript'in bir şeyin görünümünü değiştirmesinin normal yoludur: CSS durumları tanımlar, script yalnızca aralarında geçiş yapar.

classList ayrıca add, remove, contains ve replace sunar. className'e doğrudan atama yapmaktan kaçın: elementin sahip olduğu bütün class'ları değiştirir.

Class adlandırma

  • Harfler, rakamlar, tireler ve alt çizgiler güvenlidir: card, card-title, card__title, is-open.
  • Bir seçiciyi rakamla ya da ardından rakam gelen bir tireyle başlatma. .2col geçersiz CSS'tir. Bir harfle başla (.cols-2) ya da rakamı kaçış karakteriyle yaz (.\32 col).
  • Görünüme göre değil amaca göre adlandır: .error bir yeniden tasarımdan sağ çıkar, .red-text çıkmaz.
  • Büyük projelerde bir adlandırma kuralı işe yarar. BEM block__element--modifier yazar, örneğin .card__title--large.

Sık yapılan hatalar

  • Noktayı HTML'e koymak. class=".badge" hiçbir zaman .badge ile eşleşmez.
  • İki class özniteliği. <p class="a" class="b"> yalnızca a'yı tutar. class="a b" kullan.
  • İki class'ı kastederken boşluk bırakmak. .btn .primary iç içe bir element arar; .btn.primary aynı elementtir.
  • Bir id'yi tekrar kullanmak. Tekrarlanan id'ler, CSS çalışıyor gibi görünse bile getElementById'yi, çapa linklerini ve label bağlantılarını bozar.
  • Her şeye id ile stil vermek. Özgüllükleri sonraki ezmeleri zahmetli hale getirir; class kullan.

Sıkça Sorulan Sorular

CSS'te class nasıl seçilir?

Bir nokta ve ardından class adını yaz: .card { ... }, class="card" taşıyan her elemente stil verir. Nokta yalnızca CSS'te bulunur; HTML özniteliğinde nokta yoktur.

CSS'te class ile id arasındaki fark nedir?

Bir class istenen sayıda elementte kullanılabilir ve bir elementin birden fazla class'ı olabilir; bir id sayfada benzersiz olmalıdır ve bir elementin en fazla bir id'si olur. CSS'te #id, .class'tan çok daha yüksek özgüllüğe sahiptir, bu yüzden ID kurallarını ezmek daha zordur.

Bir elemente iki class nasıl verilir?

Adları tek bir öznitelikte boşlukla ayır: class="btn primary". Bir elemente iki kez class yazmak çalışmaz; tarayıcı yalnızca ilk özniteliği tutar.

İki class'a sahip bir element nasıl seçilir?

Class seçicileri boşluksuz zincirle: .btn.primary, iki class'a da sahip elementlerle eşleşir. Boşlukla yazılan .btn .primary ise bir .btn elementinin içindeki bir .primary elementi anlamına gelir.

CSS class adı rakamla başlayabilir mi?

HTML'de başlayabilir, ama bir seçici kaçış karakteri olmayan bir rakamla başlayamaz, bu yüzden .1col geçersiz CSS'tir. Rakamı kaçış karakteriyle yaz (.\31 col) ya da daha iyisi, class adlarını bir harfle başlat.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA