Học CSS từ những kiến thức nền tảng
CSS (Cascading Style Sheets) là ngôn ngữ dùng để trang trí và định dạng giao diện cho các trang web được viết bằng HTML.
Không có CSS:
This is a paragraph without CSS styling.
Có CSS:
This is a paragraph with CSS styling. Looks much better!
selector {
property: value;
property: value;
}
| Thành phần | Mô tả | Ví dụ |
|---|---|---|
| Selector | Chọn phần tử HTML muốn style | p, .class, #id |
| Property | Thuộc tính muốn thay đổi | color, font-size, background |
| Value | Giá trị của thuộc tính | red, 20px, center |
/* Chọn tất cả thẻ p và đổi màu chữ thành xanh */
p {
color: blue;
font-size: 16px;
}
/* Chọn thẻ có class="title" */
.title {
color: red;
font-weight: bold;
}
/* Chọn thẻ có id="header" */
#header {
background-color: lightgray;
padding: 20px;
}
;{ } để bao các thuộc tính/* nội dung */Thêm CSS trực tiếp vào thuộc tính style của thẻ HTML.
<h1 style="color: blue; font-size: 30px;">Hello World</h1>
<p style="background-color: yellow;">This is a paragraph.</p>
Thêm CSS vào trong thẻ <style> ở phần <head> của HTML.
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: #f0f0f0;
}
h1 {
color: navy;
text-align: center;
}
p {
font-size: 18px;
line-height: 1.6;
}
</style>
</head>
<body>
<h1>My Website</h1>
<p>Welcome to my website.</p>
</body>
</html>
Tạo file CSS riêng và link vào HTML bằng thẻ <link>.
<!-- File: index.html -->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>My Website</h1>
<p>Welcome to my website.</p>
</body>
</html>
/* File: style.css */
body {
background-color: #f0f0f0;
font-family: Arial, sans-serif;
}
h1 {
color: navy;
text-align: center;
}
p {
font-size: 18px;
line-height: 1.6;
}
| Tiêu chí | Inline CSS | Internal CSS | External CSS |
|---|---|---|---|
| Vị trí | Trong thuộc tính style |
Trong <style> |
File .css riêng |
| Độ ưu tiên | Cao nhất | Trung bình | Thấp nhất |
| Tái sử dụng | ❌ Không | ⚠️ Chỉ trong 1 file | ✅ Nhiều file |
| Bảo trì | ❌ Khó | ⚠️ Trung bình | ✅ Dễ |
| Khuyến nghị | Tránh dùng | Trang đơn giản | ⭐ Khuyên dùng |
Inline CSS luôn thắng, sau đó đến Internal CSS, cuối cùng là External CSS:
<!-- File: index.html -->
<head>
<link rel="stylesheet" href="style.css">
<style>
p { color: green; } /* Internal CSS */
</style>
</head>
<body>
<p style="color: red;">Chữ này màu gì?</p>
</body>
/* File: style.css */
p { color: blue; } /* External CSS */
Rule nào khai báo SAU sẽ ghi đè rule trước (nếu cùng độ cụ thể):
<head>
<style>
p { color: blue; } /* Khai báo trước */
p { color: red; } /* Khai báo sau → THẮNG */
</style>
</head>
<body>
<p>Chữ này màu gì?</p>
</body>
color: red khai báo sau nên ghi đè color: blue
File CSS nào được link SAU sẽ ghi đè file link trước:
<head>
<link rel="stylesheet" href="style1.css"> <!-- Link trước -->
<link rel="stylesheet" href="style2.css"> <!-- Link sau → THẮNG -->
</head>
/* style1.css */
p { color: blue; font-size: 16px; }
/* style2.css */
p { color: red; } /* Ghi đè color, giữ nguyên font-size */
color: red (từ style2.css), font-size: 16px (từ style1.css)color, các thuộc tính khác giữ nguyên
Selector càng cụ thể thì độ ưu tiên càng cao:
style="..." (1000 điểm)#header (100 điểm).menu, [type="text"], :hover (10 điểm)p, div, h1 (1 điểm)<style>
p { color: blue; } /* 1 điểm - Tag */
.text { color: green; } /* 10 điểm - Class → THẮNG trước tag */
#intro { color: red; } /* 100 điểm - ID → THẮNG tất cả */
div p { color: yellow; } /* 2 điểm - 2 Tags */
div .text { color: orange; } /* 11 điểm - Tag + Class */
</style>
<p id="intro" class="text">Màu gì?</p>
#intro (100 điểm) thắng Class .text (10 điểm) và Tag p (1 điểm)
!important ghi đè mọi rule khác, kể cả Inline CSS:
<style>
p { color: blue !important; } /* !important → THẮNG mọi thứ */
</style>
<p style="color: red;">Chữ này màu gì?</p>
!important ghi đè cả Inline CSS
!important conflict nhau → rất khó fix| Mức độ ưu tiên | Loại CSS | Ví dụ | Điểm Specificity |
|---|---|---|---|
| 1️⃣ CAO NHẤT | !important | color: red !important; |
∞ (vô hạn) |
| 2️⃣ Rất cao | Inline CSS | style="color: red" |
1,0,0,0 |
| 3️⃣ Cao | ID Selector | #header { } |
0,1,0,0 |
| 4️⃣ Trung bình | Class, Attribute, Pseudo-class | .menu { }, :hover |
0,0,1,0 |
| 5️⃣ Thấp | Tag Selector | p { }, div { } |
0,0,0,1 |
<!-- File: index.html -->
<head>
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="theme.css">
<style>
/* Internal CSS */
.title { color: green; font-size: 24px; }
#main-title { color: blue; }
p { line-height: 1.8; }
</style>
</head>
<body>
<h1 id="main-title" class="title" style="color: purple;">
Heading này màu gì?
</h1>
<p class="description">
Paragraph này được style như thế nào?
</p>
</body>
/* base.css */
h1 { color: gray; font-size: 20px; }
p { color: #333; font-size: 16px; }
/* theme.css */
.title { color: orange; font-size: 28px; }
.description { color: navy; }
<h1> sẽ có:
color: purple - Từ Inline CSS (thắng tất cả)font-size: 28px - Từ .title trong theme.css (class thắng tag, file sau thắng file trước)<p> sẽ có:
color: navy - Từ .description trong theme.css (class thắng tag)font-size: 16px - Từ p trong base.cssline-height: 1.8 - Từ p trong Internal CSSComments giúp giải thích code, không ảnh hưởng đến hiển thị.
/* Đây là comment 1 dòng */
/*
Đây là comment
nhiều dòng
rất hữu ích!
*/
/* =========================
HEADER SECTION
========================= */
header {
background: blue;
padding: 20px; /* Khoảng cách trong */
}
/* TODO: Thêm responsive sau */
.container {
width: 1200px;
}
index.htmlstyle.css<h1> với text "My First CSS Page"<p> với đoạn văn bất kỳ<button> với text "Click Me"h1: màu xanh dương, căn giữap: font-size 18px, line-height 1.6button: background màu xanh lá, chữ trắng, padding 10px 20pxTạo 1 trang HTML có 3 thẻ <h2>, mỗi thẻ dùng 1 cách CSS khác nhau:
Tạo file CSS với ít nhất 3 sections, mỗi section có comment rõ ràng:
/* ==================
RESET CSS
================== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* ==================
HEADER STYLES
================== */
header {
background: #333;
color: white;
padding: 20px;
}
/* ==================
CONTENT STYLES
================== */
.content {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}