Specificity dan Inheritance di CSS

Sudah mengubah nilai di selector tapi tampilan web tidak berubah? Mungkin anda mengubah nilai pada selector yang salah. Disinilah anda perlu mempelajari Specificity dan Inheritance di CSS. Pada pembahasan sebelumnya kita telah mempelajari tentang Pseudo-Class dan Pseudo-Element di CSS. Silahkan pelajari terlebih dahulu jika belum memahaminya.

CSS (Cascading Style Sheets) adalah bahasa stylesheet yang digunakan untuk mengontrol tampilan halaman web. Ketika mengaplikasikan gaya pada elemen HTML, CSS mengikuti aturan tertentu untuk menentukan prioritas gaya yang akan diterapkan. Aturan tersebut dikenal dengan istilah cascade, inheritance, dan specificity.

Cascade sudah kita bahas pada materi awal tentang Pengenalan CSS. Maka kita akan membahas specificity dan inheritance.

Specificity di CSS

Specificity adalah metode yang digunakan oleh browser untuk menentukan aturan CSS mana yang akan diterapkan pada elemen HTML tertentu. Ini digunakan ketika ada beberapa aturan CSS yang berlaku untuk elemen yang sama, dan browser harus memutuskan aturan mana yang harus diterapkan.

Pengukuran Specificity

Specificity dihitung dengan mempertimbangkan 4 komponen: Inline Style, ID selector, Class/Atribut/Pseudo-class, elemen selector. Ini dihitung dalam format “A-B-C-D” yang terdiri dari 4 angka, di mana A adalah jumlah inline styles, B adalah jumlah id selectors, C adalah jumlah class selectors, attribute selectors, dan pseudo-classes lalu D adalah jumlah elemen selector.

  1. Inline styles (A): Ini adalah gaya yang didefinisikan langsung di elemen HTML menggunakan atribut “style”. Inline styles memiliki specificity tertinggi.
  2. ID selectors (B): Ini adalah selektor yang digunakan untuk mengidentifikasi elemen tertentu berdasarkan id-nya.
  3. Class selectors, attribute selectors, dan pseudo-classes (C): Ini adalah selektor yang digunakan untuk mengidentifikasi elemen berdasarkan kelas, atribut, atau kondisi tertentu (pseudo-class).
  4. Elemen selectors dan pseudo-elements (D): Ini memiliki specificity terendah. Elemen selectors adalah selektor yang mengidentifikasi elemen berdasarkan nama tag-nya, sementara pseudo-elements digunakan untuk mengatur bagian-bagian tertentu dari elemen.

Contoh Inline styles yang dipakai

CSS:

#myId { color: red; }
  .myClass { color: green; }
  p { color: yellow; }

HTML:

<p style="color: blue;">Hello, World!</p>

Penjelasan: Dalam contoh ini, elemen <p> memiliki style inline dengan nilai color: blue;. Karena inline styles memiliki specificity tertinggi (1,0,0,0), warna teks pada elemen tersebut akan menjadi biru.

Contoh ID selector yang dipakai

CSS:

#myId { color: blue; }
  .myClass { color: green; }
  p { color: yellow; }

HTML:

<p id="myId" class="myClass">Hello, World!</p>

Penjelasan: Dalam contoh ini, ID selector memiliki specificity tertinggi (0,1,0,0). Jadi, meskipun ada class selector dan type selector yang berlaku pada elemen yang sama, ID selector akan mengalahkan keduanya. Warna teks pada elemen tersebut akan menjadi biru.

Contoh Class selector yang dipakai

CSS:

.myClass { color: red; }
p { color: yellow; }

HTML:

<p class="myClass">Hello, World!</p>

Penjelasan: Di sini, class selector memiliki specificity lebih tinggi (0,0,1,0) dibandingkan dengan type selector (0,0,0,1). Jadi, meskipun ada type selector yang berlaku pada elemen yang sama, class selector akan mengalahkannya. Warna teks pada elemen tersebut akan menjadi merah.

Masih merasa sulit menghitungnya? Mari kita lihat contoh berikut:

Contoh pengukuran Specificity

<!DOCTYPE html>
<html>
<head>
   <title>Contoh Kasus Spesifik CSS</title>
   <style type="text/css">
            span {
               color: navy;
            }
            #idUnik span {
               color: olive;
            }
            .classSpesial {
               color: lime;
            }
            body div #idUnik {
               color: maroon;
            }
            div span.classSpesial {
               color: fuchsia;
            }
    </style>
</head>
<body>
   <div>
    <span id="idUnik" class="classSpesial">
        Contoh Spesifik CSS
    </span>
   </div>
</body>
</html>

Berikut cara menghitungnya:

  • Selector span, hanya terdiri dari 1 tag selector, maka nilainya: 0,0,0,1
  • Selector #idUnik span, terdiri dari 1 ID selector dan 1 tag selector, maka nilainya: 0,1,0,1
  • Selector .classSpesial, terdiri dari 1 class selector, maka nilainya: 0,0,1,0
  • Selector body div #idUnik, terdiri dari 1 ID selector dan 3 tag selector, maka nilainya: 0,1,0,2
  • Selector div span.classSpesial, terdiri dari 1 class selector dan 2 tag selector, maka nilainya: 0,0,1,2

Maka yang diterapkan adalah warna maroon dengan hasil nilai 0,1,0,2 yang merupakan nilai tertinggi.

!important

!important adalah sebuah kualifikasi yang dapat ditambahkan pada deklarasi gaya CSS untuk memberikan keutamaan pada aturan tersebut dibandingkan dengan aturan lain yang mungkin berlaku pada elemen yang sama. Dengan kata lain, deklarasi yang memiliki !important akan diutamakan, meskipun aturan lain memiliki specificity yang lebih tinggi.

CSS:

.myClass {
  color: red !important;
}

#myId {
  color: blue;
}

HTML:

<p id="myId" class="myClass">Hello, World!</p>

Meskipun ID selector biasanya memiliki specificity yang lebih tinggi dibandingkan class selector, dalam kasus ini aturan .myClass akan mengalahkan aturan #myId karena memiliki !important. Hasilnya, warna teks pada elemen tersebut akan menjadi merah.

Namun, penggunaan !important harus dilakukan dengan hati-hati, karena dapat membuat kode CSS menjadi sulit dikelola dan membingungkan. Ini harus dihindari sebisa mungkin dan hanya digunakan sebagai solusi terakhir saat tidak ada cara lain untuk mengatasi konflik aturan CSS.

Inheritance di CSS

Inheritance (pewarisan) dalam CSS adalah suatu mekanisme yang memungkinkan sebuah elemen untuk mewarisi sifat atau style dari elemen induknya. Ini adalah salah satu fitur dasar CSS yang sangat berguna untuk memudahkan penulisan kode dan menjaga konsistensi gaya dalam desain web.

Dalam CSS, tidak semua properti dapat diwariskan. Beberapa properti yang biasanya diwariskan meliputi font-size, color, dan text-align, tetapi ada banyak properti lain yang juga dapat diwariskan.

Contoh Penggunaan Inheritance

Mari kita lihat contoh penggunaan pewarisan dalam CSS:

<!DOCTYPE html>
<html>
<head>
    <title>Contoh Inheritance CSS</title>
    <style>
        /* Elemen <body> memiliki gaya font-size dan color yang akan diwariskan ke elemen-elemen di dalamnya */
        body {
            font-size: 16px;
            color: blue;
        }

        /* Elemen <div> secara otomatis akan mewarisi font-size dan color dari elemen <body> */
        div {
            /* Tanpa perlu mendefinisikan font-size dan color di sini */
        }

        /* Elemen <p> juga akan mewarisi font-size dan color dari elemen <body> */
        p {
            /* Tanpa perlu mendefinisikan font-size dan color di sini */
        }
    </style>
</head>
<body>
    <div>
        <p>Paragraf ini akan memiliki font-size 16px dan warna biru.</p>
    </div>
</body>
</html>

Dalam contoh di atas, elemen <body> memiliki gaya font-size dan color yang didefinisikan di dalam CSS. Karena kedua properti ini dapat diwariskan, maka elemen-elemen di dalam <body>, seperti <div> dan <p>, akan otomatis mewarisi nilai font-size dan color tersebut tanpa perlu mendefinisikannya secara eksplisit.

Mengganti Gaya yang Diwariskan

Meskipun pewarisan dapat sangat membantu, terkadang Anda mungkin ingin mengganti gaya yang diwariskan untuk elemen-elemen tertentu. Anda dapat melakukannya dengan mendefinisikan gaya secara eksplisit pada elemen tersebut.

<!DOCTYPE html>
<html>
<head>
    <title>Contoh Inheritance CSS</title>
    <style>
        body {
            font-size: 16px;
            color: blue;
        }

        /* Mengganti gaya yang diwariskan pada elemen <p> */
        p {
            color: red;
        }
    </style>
</head>
<body>
    <div>
        <p>Paragraf ini akan memiliki warna merah.</p>
    </div>
</body>
</html>

Dalam contoh di atas, elemen <p> akan memiliki warna merah, meskipun elemen induknya (elemen <body>) memiliki warna biru. Ini karena gaya yang didefinisikan secara eksplisit pada elemen <p> akan menggantikan gaya yang diwariskan.

inherit

Inherit dalam css adalah nilai yang digunakan untuk mengatur elemen agar mewarisi nilai dari elemen induknya secara paksa meskipun properti tersebut tidak bisa diwariskan.

Contoh penggunaan inherit

CSS:

.parent {
  font-size: 24px;
  color: red;
  margin: 10px;
}

.child {
  font-size: inherit;
  margin: inherit;
}

HTML:

<div class="parent">
  Ini teks induk
  <p class="child">Ini teks anak</p>
</div>

Dalam contoh ini, elemen dengan kelas .child akan mewarisi nilai font-size dan margin dari elemen dengan kelas .parent. Hasilnya, teks dalam elemen .child akan memiliki ukuran font 24px dan margin 10px, yang sama dengan elemen .parent.

Secara umum, pewarisan dalam CSS adalah fitur yang berguna untuk memudahkan penulisan kode dan menjaga konsistensi gaya dalam desain web. Anda dapat mengandalkan pewarisan untuk mengatur properti yang umum di seluruh halaman web dan mendefinisikan gaya secara eksplisit untuk mengganti atau menyesuaikan gaya pada elemen-elemen tertentu.

Apa yang perlu dipelajari selanjutnya?

Setelah memahami Specificity dan Inheritance di CSS maka selanjutnya pelajari:

Warna CSS

Mari lanjutkan!

M. Hernawan
Web developer yang juga suka dengan dunia sysadmin. Pernah belajar Teknik Informatika di Indonesia.

Kirim Komentar