HTML dokümanlarının yapısından ve CSS ile olan ilişkisinden (X)HTML Sayfa Yapısı ve CSS Kullanımı makalesinde bahsetmiştik, bu makaleden önce bir göz atmanızı tavsiye ederiz. HTML öğeleri bir biri ile bir ailenin birbiri ile olan bağı gibi bağlıdır. Hatırlıyorsanız bir soy ağacı benzetmesi yapmıştık. İşte bu soy ağacının öğeleri arasında bir kalıtsallık söz konusudur. Ebeveynden çocuğuna geçen özellikler gibi HTML öğeleri arasında CSS özellikleride kalıtsal olarak alt elementleri (çocuk element) etkiler. Kalıtsallık; CSS ile web sayfası kodlarken tüm elementlere tek tek atama yapabildiğimiz gibi birde bir elemente atama yaparız ve bu özellik tüm alt(çocuk elementleri) elementlerine de uygulanır buna kalıtsallık denir. CSS’in bir çok özelliğinin kalıtsallık özelliği vardır. Hızlı CSS Referansı bölümü ve alt bölümlerinde her özelliğin kalıtsallık durumunu belirtmiştik.

Bazı CSS özelliklerinde kalıtsallık yoktur. Örneğin margin, padding ve border özellikleri gibi tüm liste aşağıda

CSS1’de kalıtsallığı olmayan özelliklerin listesi:

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position
  • background
  • text-decoration
  • vertical-align
  • margin-top
  • margin-right
  • margin-bottom
  • margin-left
  • margin
  • padding-top
  • padding-right
  • padding-bottom
  • padding-left
  • padding
  • border-top-width
  • border-right-width
  • border-bottom-width
  • border-left-width
  • border-width
  • border-color
  • border-style
  • border-top
  • border-right
  • border-bottom
  • border-left
  • border
  • width
  • height
  • float
  • clear
  • display

Örnek bir kodlama yaparsak:

.icerik {
  text-align: center;
}
<div class="icerik">
  Buradaki içerik ortalanacaktır 
  <p> text-align özelliğinin kalıtsallığı olduğu için buradaki içeirkte ortalanacaktır </p>
</div>

Kalıtsallık kodlama yaparken bazen bize yararlı olur, bazende sayfalarımızda sorun çıkmasına neden olur. Bundan dolayı elementlerin kaltsallığı olup olmadığını bilmeliyiz. Yoksa gerçekten zor durumlarda kalabilirsiniz, tecrübeyle sabit :)

Direk atamalar kalıtsallığı yok eder.Örneğin yukarıda örnekte

p{ 
  text-align: left;
}

tanımlaması ile üst element olan #icerik‘den kalıtsal olarak gelen text-align: center; tanımlamasını etkisiz kılar.

inherit değeri

CSS2 ile birlikte CSS özelliklerine inherit değeri atamamıza olanak sağlamaktadır. Tüm elementlere (kalıtsallık özelliği olmayanlar dahil) inherit değeri atayabiliriz. inherit değeri atadığımız element üst elementinin değerlerini alacaktır. Bir örnek yapacak olursak:

.icerik {
  border: 1px solid #000;
}
.bilgi {
  border: inherit;
}
<div class="icerik">
  Bu içeriği kenarlığı olacaktır
  <div class="bilgi"> 
    Bu bilgi de kenarlık bilgisini üstten elementten 
    alarak kenarlığı olacaktır. 
  </div>
</div>

Kalıtsallığı kullanarak kodlarımızı azaltabiliriz. Ancak kalıtsallık nedeni ile de bir çok sorunla karşılaştığımızıda unutmayalım.

Kaynaklar

Avatar Popout Efekti

Avatar Popout Efekti uygulaması Devamını oku

Kapsayıcı sorguları (container query)

29 January 2024 tarihinde yayınlandı.

Renk geçişli ve Hareketli kenar çizgileri

22 January 2024 tarihinde yayınlandı.