Panduan lengkap CSS Basic Selectors untuk styling web modern
CSS Selectors adalah pola yang digunakan untuk memilih elemen HTML yang ingin diberi styling. Memahami selectors adalah kunci untuk menguasai CSS.
/* Universal Selector */
* {
margin: 0;
padding: 0;
}
/* Element Selector */
h1 {
color: #9333ea;
font-size: 2.5rem;
}
/* Class Selector */
.header {
background: linear-gradient(45deg, #9333ea, #a855f7);
padding: 2rem;
}
/* ID Selector */
#main-content {
max-width: 1200px;
margin: 0 auto;
}
đ Penjelasan Detail:
âĸ *
- Universal Selector memilih semua elemen
âĸ h1, p, div
- Element Selector memilih berdasarkan tag HTML
âĸ .class-name
- Class Selector dimulai dengan titik (.)
âĸ #id-name
- ID Selector dimulai dengan hash (#)
âĸ h1.title
- Combined Selector untuk spesifitas lebih tinggi
/* Descendant Selector */
.container p {
color: #e0e0e0;
line-height: 1.6;
}
/* Child Selector */
.nav > li {
display: inline-block;
margin: 0 1rem;
}
/* Adjacent Sibling */
h2 + p {
margin-top: 0;
font-weight: 500;
}
/* General Sibling */
h2 ~ p {
color: #ccc;
}
Semua basic selectors didukung penuh oleh semua browser modern (Chrome 1+, Firefox 1+, Safari 1+, IE 7+).
/* Priority Table (Specificity) */
* /* 0,0,0,0 */
li /* 0,0,0,1 */
.class /* 0,0,1,0 */
#id /* 0,1,0,0 */
style="" /* 1,0,0,0 */
/* Common Patterns */
.btn.primary /* Multiple classes */
div.container /* Element + class */
#header .logo /* ID + descendant */
ul li:first-child /* Pseudo-selector */
đ Penjelasan Detail:
âĸ Specificity menentukan prioritas selector yang akan diterapkan
âĸ Semakin tinggi nilai specificity, semakin tinggi prioritasnya
âĸ !important akan override semua specificity
âĸ Best practice: hindari penggunaan !important yang berlebihan
/* Pseudo-classes */
a:hover {
color: #a855f7;
transition: color 0.3s ease;
}
input:focus {
outline: 2px solid #9333ea;
border-color: transparent;
}
/* Structural pseudo-classes */
li:nth-child(odd) {
background: rgba(147, 51, 234, 0.1);
}
/* Pseudo-elements */
.card::before {
content: "";
position: absolute;
background: linear-gradient(45deg, #9333ea, #a855f7);
}
Pseudo-selectors: Chrome 1+, Firefox 1+, Safari 1+, IE 8+. Pseudo-elements dengan :: syntax: Chrome 1+, Firefox 1.5+, Safari 1+, IE 9+.
Gunakan class selectors untuk styling utama, hindari over-nesting (max 3 levels), dan prioritaskan readability over cleverness.
/* â
Good - Readable and maintainable */
.btn-primary {
background: #9333ea;
color: white;
}
.card .title {
font-size: 1.5rem;
}
/* â Avoid - Too specific */
div.container > section.main > article.post > h2.title {
color: #9333ea;
}
/* â Avoid - Over-qualified */
div#header div.container ul.nav li.item a.link {
text-decoration: none;
}
đ Penjelasan Detail:
âĸ Keep it simple - gunakan selector sesederhana mungkin
âĸ Avoid deep nesting - maksimal 3 level untuk maintainability
âĸ Use meaningful names - class names harus deskriptif
âĸ Follow BEM methodology - Block__Element--Modifier pattern
âĸ Performance matters - ID dan class selectors paling cepat