CSS Advanced & Responsive
by oktaviardi pratama
HTML
<!-- 1. Media Queries -->
<h2>1. Media Queries (Responsive)</h2>
<div class="section">
<p><strong>Desktop:</strong> 3 kolom biru | <strong>Mobile:</strong> 1 kolom merah</p>
<p><em>(Kecilkan layar browser untuk melihat perubahan)</em></p>
<div class="responsive-grid">
<div class="responsive-box">Kolom 1</div>
<div class="responsive-box">Kolom 2</div>
<div class="responsive-box">Kolom 3</div>
</div>
</div>
<!-- 2. Pseudo-Class -->
<h2>2. Pseudo-Class</h2>
<div class="section">
<p>Hover, Focus, Active pada button:</p>
<button class="btn">Hover Saya</button>
<button class="btn">Klik Saya</button>
<p style="margin-top: 20px;">:nth-child() pada list:</p>
<div class="list-item">Item 1 (Ganjil - Abu)</div>
<div class="list-item">Item 2 (Genap - Biru)</div>
<div class="list-item">Item 3 (Ganjil - Abu)</div>
<div class="list-item">Item 4 (Genap - Biru)</div>
</div>
<!-- 3. Pseudo-Element -->
<h2>3. Pseudo-Element</h2>
<div class="section">
<div class="decorated-box">
Kotak dengan hiasan ::before (bintang) dan ::after (teks Premium)
</div>
</div>
<!-- 4. Transitions -->
<h2>4. Transitions</h2>
<div class="section">
<p>Hover kotak hijau untuk melihat animasi halus:</p>
<div class="transition-box"></div>
</div>
<!-- 5. Animations -->
<h2>5. Animations (Keyframes)</h2>
<div class="section">
<p class="animate-fade">Teks ini muncul dengan Fade In</p>
<br>
<span class="animate-pulse">Tombol Berdenyut (Pulse)</span>
<br><br>
<div class="animate-spin"></div>
<p>Loading Spinner</p>
</div>
CSS
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: Arial, sans-serif;
background: #f4f4f4;
padding: 20px;
}
h2 {
margin: 30px 0 15px;
padding-bottom: 10px;
border-bottom: 3px solid #3498db;
}
.section {
background: white;
padding: 20px;
margin-bottom: 20px;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
/* --- 1. MEDIA QUERIES (Responsive) --- */
.responsive-grid {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 kolom default */
gap: 15px;
}
.responsive-box {
background: #3498db;
color: white;
padding: 30px;
text-align: center;
border-radius: 8px;
}
/* Mobile: 1 kolom saat layar < 768px */
@media (max-width: 768px) {
.responsive-grid {
grid-template-columns: 1fr;
}
.responsive-box {
background: #e74c3c; /* Warna berubah di mobile */
}
}
/* --- 2. PSEUDO-CLASS --- */
.btn {
display: inline-block;
padding: 12px 25px;
background: #2c3e50;
color: white;
text-decoration: none;
border-radius: 5px;
margin: 5px;
border: none;
cursor: pointer;
font-size: 16px;
}
.btn:hover {
background: #3498db; /* Hover state */
transform: scale(1.05);
}
.btn:focus {
outline: 3px solid #f39c12; /* Focus state */
}
.btn:active {
background: #1a252f; /* Click state */
}
/* Pseudo-class :nth-child */
...