Cascading Style Sheets (CSS)
Selamat datang ke modul pembelajaran CSS. Pelajari cara menghias dan mengatur reka bentuk laman web anda.
Pengenalan CSS
CSS (Cascading Style Sheets) adalah bahasa yang digunakan untuk menghias dan mengatur reka bentuk halaman web.
Apakah CSS?
- CSS = Cascading Style Sheets
- Mengawal rupa dan format halaman web
- Memisahkan kandungan (HTML) daripada persembahan (CSS)
- Membolehkan satu fail CSS digunakan untuk banyak halaman
- Menjadikan laman web lebih menarik dan professional
âšī¸ Fakta: Dengan CSS, anda boleh mengawal warna, font, spacing, layout, animations dan banyak lagi!
Kelebihan CSS:
⨠Kelebihan
- âĸ Mudah untuk maintain
- âĸ Jimat masa
- âĸ Konsisten across pages
- âĸ Responsive design
đ¯ Kegunaan
- âĸ Warna & backgrounds
- âĸ Fonts & text styling
- âĸ Layout & positioning
- âĸ Animations & effects
Jenis-jenis Style Sheets
Terdapat 3 cara untuk menggunakan CSS dalam halaman web.
1. Inline CSS
CSS ditulis terus dalam tag HTML menggunakan atribut style.
<p style="color: #bf9270; font-size: 18px;">Teks berwarna</p>
â ī¸ Nota: Inline CSS hanya untuk satu elemen sahaja. Tidak digalakkan untuk banyak elemen.
2. Internal CSS
CSS ditulis dalam tag <style> di bahagian <head>.
<head>
<style>
p {
color: #bf9270;
font-size: 18px;
}
</style>
</head>
âšī¸ Kegunaan: Sesuai untuk single page atau testing.
3. External CSS (Recommended)
CSS ditulis dalam fail berasingan (.css) dan dipautkan ke HTML.
<!-- Dalam HTML -->
<head>
<link rel="stylesheet" href="style.css">
</head>
/* Dalam style.css */
p {
color: #bf9270;
font-size: 18px;
}
â Best Practice: External CSS membolehkan satu fail CSS digunakan untuk banyak halaman HTML!
CSS Selectors
Selectors digunakan untuk memilih elemen HTML yang ingin di-style.
1. Tag Selector
Memilih semua elemen berdasarkan nama tag.
/* Pilih semua <p> */
p {
color: #4a4a4a;
}
/* Pilih semua <h1> */
h1 {
font-size: 36px;
color: #bf9270;
}
2. ID Selector
Memilih satu elemen dengan ID tertentu. Gunakan #.
/* Pilih elemen dengan id="header" */
#header {
background-color: #f8f5f1;
padding: 20px;
}
<!-- HTML -->
<div id="header">Ini adalah header</div>
â ī¸ Penting: ID hanya boleh digunakan SEKALI dalam satu halaman!
3. Class Selector
Memilih semua elemen dengan class yang sama. Gunakan .
/* Pilih semua elemen dengan class="highlight" */
.highlight {
background-color: #ffe8d6;
font-weight: bold;
padding: 0.5rem;
}
<!-- HTML -->
<p class="highlight">Teks highlighted</p>
<span class="highlight">Ini juga highlighted</span>
â Tips: Class boleh digunakan berkali-kali, manakala ID hanya sekali per halaman.
Type Properties (Text & Font)
Properties untuk mengawal rupa teks dan font.
Font Properties:
p {
font-family: Arial, sans-serif; /* Jenis font */
font-size: 16px; /* Saiz font */
font-weight: bold; /* Ketebalan (normal, bold, 100-900) */
font-style: italic; /* Style (normal, italic, oblique) */
}
Text Properties:
p {
color: #333333; /* Warna teks */
text-align: center; /* Alignment (left, center, right, justify) */
text-decoration: underline; /* Decoration (none, underline, line-through) */
text-transform: uppercase; /* Transform (uppercase, lowercase, capitalize) */
line-height: 1.6; /* Jarak antara baris */
letter-spacing: 2px; /* Jarak antara huruf */
}
Contoh Kombinasi:
.heading {
font-family: 'Playfair Display', serif;
font-size: 32px;
font-weight: 700;
color: #bf9270;
text-align: center;
text-transform: uppercase;
letter-spacing: 3px;
}
.paragraph {
font-family: 'DM Sans', sans-serif;
font-size: 16px;
line-height: 1.8;
color: #4a4a4a;
text-align: justify;
}
Background Properties
Properties untuk mengawal background elemen.
Background Color:
div {
background-color: #fdfaf6; /* Warna solid */
}
Background Image:
div {
background-image: url('image.jpg'); /* Gambar background */
background-repeat: no-repeat; /* repeat, no-repeat, repeat-x, repeat-y */
background-position: center; /* Position gambar */
background-size: cover; /* cover, contain, atau px */
}
Gradient Backgrounds:
/* Linear Gradient - Warm Theme */
.gradient1 {
background: linear-gradient(135deg, #bf9270, #c77d3f);
}
/* Linear Gradient - Soft Beige */
.gradient2 {
background: linear-gradient(to right, #fdfaf6, #f8f5f1);
}
/* Radial Gradient */
.gradient3 {
background: radial-gradient(circle, #d4a989, #bf9270);
}
Background Shorthand:
/* Gabungkan semua dalam satu baris */
div {
background: #f0f0f0 url('bg.jpg') no-repeat center/cover;
}
âšī¸ Tips: Gunakan gradient untuk design yang lebih menarik tanpa perlu gambar!
Block Properties (Spacing & Sizing)
Properties untuk mengawal saiz dan ruang elemen.
Width & Height:
div {
width: 300px; /* Lebar tetap */
height: 200px; /* Tinggi tetap */
max-width: 100%; /* Maksimum lebar */
min-height: 150px; /* Minimum tinggi */
}
Margin (Ruang Luar):
div {
margin: 20px; /* Semua sisi */
margin-top: 10px; /* Atas sahaja */
margin-right: 15px; /* Kanan sahaja */
margin-bottom: 10px; /* Bawah sahaja */
margin-left: 15px; /* Kiri sahaja */
/* Shorthand */
margin: 10px 15px; /* Atas-Bawah Kiri-Kanan */
margin: 10px 15px 20px 25px; /* Atas Kanan Bawah Kiri */
}
Padding (Ruang Dalam):
div {
padding: 20px; /* Semua sisi */
padding-top: 10px; /* Atas sahaja */
padding-right: 15px; /* Kanan sahaja */
padding-bottom: 10px; /* Bawah sahaja */
padding-left: 15px; /* Kiri sahaja */
/* Shorthand */
padding: 10px 15px; /* Atas-Bawah Kiri-Kanan */
}
â ī¸ Perbezaan: Margin adalah ruang di LUAR border, manakala Padding adalah ruang di DALAM border.
Box Model
Setiap elemen HTML adalah sebuah box yang terdiri daripada content, padding, border, dan margin.
Komponen Box Model:
Padding
Border
Margin
Urutan dari dalam ke luar:
- Content - Kandungan sebenar (teks, gambar, dll)
- Padding - Ruang antara content dan border
- Border - Garis sempadan elemen
- Margin - Ruang di luar border
Contoh Box Model:
div {
width: 300px; /* Lebar content */
height: 200px; /* Tinggi content */
padding: 20px; /* Ruang dalam */
border: 5px solid #bf9270; /* Border */
margin: 30px; /* Ruang luar */
}
/* Total lebar = 300 + 20+20 + 5+5 + 30+30 = 410px */
âšī¸ Nota: Total width/height termasuk padding dan border (kecuali gunakan box-sizing: border-box)
Border Properties
Properties untuk mengawal border (garis sempadan) elemen.
Border Properties:
div {
border-width: 2px; /* Ketebalan */
border-style: solid; /* Style (solid, dashed, dotted, double) */
border-color: #bf9270; /* Warna */
border-radius: 12px; /* Sudut bulat */
/* Shorthand */
border: 2px solid #bf9270;
}
Border Style Types:
solid
dashed
dotted
double
Border Radius (Rounded Corners):
div {
border-radius: 8px; /* Semua sudut */
border-radius: 16px 16px 0 0; /* Atas sahaja */
border-radius: 50%; /* Bulat penuh (circle) */
}
Individual Border:
div {
border-top: 3px solid #bf9270;
border-right: 2px dashed #c77d3f;
border-bottom: 3px solid #bf9270;
border-left: 2px dashed #c77d3f;
}
CSS Positioning
Position property menentukan bagaimana elemen diposisikan dalam halaman.
Position Types:
1. Static (Default)
Elemen mengikut flow normal dokumen.
div {
position: static; /* Default, tidak perlu tulis */
}
2. Relative
Elemen diposisikan relatif kepada kedudukan normalnya.
div {
position: relative;
top: 10px; /* Bergerak 10px dari atas */
left: 20px; /* Bergerak 20px dari kiri */
}
3. Absolute
Elemen diposisikan relatif kepada parent container terdekat yang ada position.
div {
position: absolute;
top: 0;
right: 0;
}
4. Fixed
Elemen kekal di tempat yang sama walaupun scroll.
div {
position: fixed;
bottom: 0;
width: 100%;
}
5. Sticky
Gabungan relative dan fixed. Sticky apabila scroll sampai threshold.
div {
position: sticky;
top: 0;
}
â ī¸ Nota: Gunakan top, right, bottom, left untuk adjust position (kecuali static).
Z-Index (Layer):
/* Elemen dengan z-index lebih tinggi akan berada di atas */
.layer1 {
position: relative;
z-index: 1;
}
.layer2 {
position: relative;
z-index: 2; /* Ini akan berada di atas layer1 */
}