1. Giới Thiệu CSS
-
CSS là ngôn ngữ giúp cho Website của bạn trở nên có màu sắt và đẹp
hơn. Nếu không có CSS thì WebSite chỉ là các thẻ HTML không màu sắt
hay định dạng nào hết
- Thêm màu sắt
- Xác định layout cấu trúc website
- Thay đổi font chữ
- Thay đổi giao diện ở các kích thước màn hình khác nhau
- ..........................
2. Cấu Trúc CSS

- Selector : các thẻ cần gán css
- Các Element
- Các Id của HTML
- Các class của HTML
-
Declaration: Được nằm trong dấu {Các thuộc tính định nghĩa css} các
nhau bởi dấu ;
- Property: thuộc tính css (color, background-color,border.....)
- Value: Các giá trị của thuộc tính (red, #FFFFFF, src.....)
p { color: red; text-align: center; }
3. CSS Selector
- Thẻ HTML - Là các thẻ p, h1, h2, .......
-
Các thẻ HTML có chứa ID (duy nhất) (dấu #)
<div id="class1"> Nội Dung </div> ---- CSS ------ #class1 { color: red; text-align: center; }
-
Các Thẻ HTML có chứa Class(nhiều thẻ HTML chung 1 class) (dấu .)
<div class="class1"> Nội Dung </div> ---- CSS ------ .class1 { color: red; text-align: center; }
- (Dấu *) Áp dụng cho toàn Website
* { color: red; text-align: center; }
4. Các Loại Cấu Hình CSS (3 Cách)
- External CSS (Cấu hình css bên ngoài bằng file) * 1 File CSS có thể được chạy trên nhiều Page HTML - Ta tạo 1 css (style.css)
- Internal CSS (Viết Css trực tiếp trên file HTML) * Nếu chúng ta muốn CSS sẽ được chạy trên 1 Page HTML. - Tất cả code CSS được lưu trữ trong thẻ <Style></Style>
- Inline CSS (Viết CSS trực tiếp trên thẻ HTML) * Áp dụng 1 cho 1 Thẻ HTML - Tất cả các code CSS được lưu trữ ở Atribute style
- Multiple Style Sheets - 1 Website HTML có thể áp dụng 1 lần 3 cách
- Inline CSS (1)
- Internal CSS (2)
- External CSS (3)
- Trang nào ta cần nhúng css trên vào thì ta thêm dòng code trên thẻ Head
<head> <link href="/style.css" rel="stylesheet" /> </head>
<style> * { color: red; text-align: ``center; } </style>
<div style="background-color: red;text-align: center;"> Nội Dung Trong Thẻ Div</div>
-
Mức Độ Ưu Tiên:
5. Comments CSS
- Dùng để comment code của mình /* Nội dung */
/* This is a single-line comment */ p { color: red; }
6.Color CSS (Màu sắt CSS)
- Color : Dùng để set màu sắt của CSS
- Set background-color (Màu nền)
- Set border color (viền màu sắt)
- Set Color (Màu chữ)
- ------------------------
-
Có 5 Cách Sét Màu Sắt:
- 1. Color: là sử dụng tên màu sắt như (red, blue, green, black, while)
- 2. RGB: Sử dụng hàm rgb(red, green, blue) điều chỉnh thông số 3 màu để tạo thành 1 màu khác
- 3. RGBA: tương tự với rgb tuy nhiên có thêm thông số ALPHA ở cuối để set độ trong suốt rgba(red, green, blue, alpha)
- 4. Hex: Sử dụng mã màu hex để set màu #rrggbb ví dụ: #f0f0f0 #3c3c3c
- 5. HSL: Sử dụng 1 màu nhưng set thêm Sự bảo hoà (saturation) và sự nhẹ nhàng (lightness) hsl(hue(màu sắt), saturation(% bảo hoà màu), lightness(% nhẹ nhàng màu))
#class1 { color: red; background-color: rgb(60, 179, 113); border: sloid 2px rgba(60,179,113,0.2); color: #ffff; color: hsl(10,10%,80%) }
7. Background CSS (Màu nền CSS)
- Background : Set nền cho Website
-
Các thuộc tính Backgroup:
- background-color : Set background là màu nền
- background-image : Set background là 1 hình
-
background-repeat : Set background có lặp hình hay không
- background-repeat : repeat-x => lặp theo cột X
- background-repeat : repeat-y => lặp theo cột Y
- background-repeat : no-repeat => không lặp
-
background-attachment : Set background cố định hay cuộn theo nội dung
- background-attachment : fixed => cố định 1 chỗ
- background-attachment : scroll => cuộn theo nội dung website
- background-position :right top => cố định góc trên và bên phải
-
background (shorthand property): gộp tất cả các thuộc tính trên 1 thành dòng duy nhất
- background: #ffffff url("img_tree.png") no-repeat right top;
#div { background-color: red; /* Sét màu nền */ background-image: url(./hinh1.png) /* Sét hình nền */ background-repeat: no-repeat /* background có lặp lại không */ background-attachment: fixed /* background có cố định 1 chỗ không*/ background-position :right top /* bổ trợ cho background-attachment xác định vị ghí cố định*/ } #div2 { background: #ffffff url("img_tree.png") no-repeat right top; /* Viết tắt gộp các thuộc tính trên */ }
8. Border CSS (Viền CSS)
- Border : Thêm viền cho 1 đối tượng nào đó
-
Các thuộc tính của Border
- border-width : 5px => xác định độ rộng của viền
-
border-style (required) : solid => xác định loại của viền
-
Các style:
-
1. dotted - Defines a dotted border 2. dashed - Defines a dashed border 3. solid - Defines a solid border 4. double - Defines a double border 5. groove - Defines a 3D grooved border. The effect depends on the border-color value 6. ridge - Defines a 3D ridged border. The effect depends on the border-color value 7. inset - Defines a 3D inset border. The effect depends on the border-color value 8. outset - Defines a 3D outset border. The effect depends on the border-color value 9. none - Defines no border 10. hidden - Defines a hidden border
-
- border-color: red => xác định màu sắt của viền
- border-radius: 5px; => bo tròn viền border
- border: 5px solid red; => viết tắt border từ các thuộc tính trên thành 1
-
Set border cho từng cạnh riêng (Có thể Set mỗi cạnh 1 border cũng được):
- border-left: sloid 2px red;
- border-right: sloid 2px blue;
- border-top: sloid 2px blue;
- border-bottom: sloid 2px blue;
#div1 { border-style: sloid; /* kiểu border */ border-width: 5px; /* độ rộng border */ border-color: red; /* màu sắt border */ border-radius: 3px ; /* làm tròn viền css */ } #div1 { border: sloid 2px red; /* viết tắt gộp từ các thuộc tính trên */ border-radius: 3px ; } #div1 { border-left: sloid 2px red; /* chỉ định riêng border bên trái*/ border-radius: 3px ; }

9. Margin CSS (Khoản cách bên ngoài Border)
- Margin : Set khoản cách bên ngoài border thẻ HTML
-
Set Margin cho từng cạnh của thẻ:
- margin-left: 5px => Set khoảng cách bên ngoài border bên trái là 5px
- margin-right: 5px => Set khoảng cách bên ngoài border bên phải là 5px
- margin-top: 5px => Set khoảng cách bên ngoài border và bên trên là 5px
- margin-bottom: 5px => Set khoảng cách bên ngoài border và bên dưới là 5px
-
Viết tắt margin:
- margin: 10px; => đều các cạnh là 10px
- margin: 5px 10px => Trên dưới là 5px + trái phải là 10px
- margin: 5px 10px 15px; => Trên là 5px + Trái phải là 10px + dưới là 15px
- margin: 5px 10px 15px 20px; => Trên + phải + dưới + trái (kim đồng hồ)
#div { margin-top: 5px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; } #div1 { margin:5px /* 4 cạnh đều = 5*/ } #div2 { margin: 5px 10px 15px 20px; => Trên + phải + dưới + trái (kim đồng hồ) }
10. Padding CSS (Khoản cách bên trong từ content đến Border)
- Padding : Set khoản cách bên trong border và bên ngoài content thẻ HTML
-
Set Padding cho từng cạnh của thẻ:
- padding-left: 5px => Set khoảng cách bên ngoài content bên trái là 5px
- padding-right: 5px => Set khoảng cách bên ngoài content bên phải là 5px
- padding-top: 5px => Set khoảng cách bên ngoài content và bên trên là 5px
- padding-bottom: 5px => Set khoảng cách bên ngoài content và bên dưới là 5px
-
Viết tắt padding:
- padding: 10px; => đều các cạnh là 10px
- padding: 5px 10px => Trên dưới là 5px + trái phải là 10px
- padding: 5px 10px 15px; => Trên là 5px + Trái phải là 10px + dưới là 15px
- padding: 5px 10px 15px 20px; => Trên + phải + dưới + trái (kim đồng hồ)
#div { padding-top: 5px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; } #div1 { padding:5px /* 4 cạnh đều = 5*/ } #div2 { padding: 5px 10px 15px 20px; => Trên + phải + dưới + trái (kim đồng hồ) }
11. Width and Height CSS (Độ rộng và Chiều cao CSS)
- Width and Height : Đùng để set độ rộng và chiều cao của thuộc tính
-
With: Sét độ rộng của thuộc tính
-
width: 100% /* sét thẻ có rộng là 100% full website */
width: 500px /* set thẻ có độ rộng là 500px */
width: 50vh /* set thẻ có động rộng là 50% thẻ cha chứa nó *?
- max-width: 100% /* set Độ rộng tối đa */
- min-width: 100px /* set Độ rộng tối thiểu */
-
height: Sét chiều cao của thuộc tính
-
height: 100% /* sét thẻ có chiều cao là 100% full website */
height: 500px /* set thẻ có chiều cao là 500px */
height: 50vh /* set thẻ có chiều cao là 50% thẻ cha chứa nó *?
- max-height: 100% /* set chiều cao tối đa */
- min-height: 100px /* set chiều cao tối thiểu */
#div { width: 100%; /* chiều rộng ban đầu là 100% */ height: 300px; /* chiều cao ban đầu là 300px */ background-color: red; max-height: 600px; /* Chiều cao tối đa là 600px */ min-width: 50%; /* Chiều độ rộng tối thiểu là 50% so với màn hình */ }
12. Box CSS
- Box : giống như ô đất rộng chứa nội dung(content) + padding + border + margin
- content: là ngôi nhà (tượng chưng cho nội dung)
- padding: là sân bao quanh nhà
- border: là 1 hàng rào bao quanh nhà
- margin: là độ rộng của vỉa vẻ bao quanh hàng rào
-
Hình minh hoạ của 1 Box:
-
Để tính box rộng bao nhiêu ta dùng công thức sau:
Box = content + padding + border + margin
#div2 { background-color: red; width: 320px ; height : 50px; padding: 20px; border: sloid 10px blue; margin: 0px; } 320px (width of content area) + 20px (left padding + right padding) + 10px (left border + right border) = 350px (total width) 50px (height of content area) + 20px (top padding + bottom padding) + 10px (top border + bottom border) = 80px (total height)
13. Outline CSS (Độ dày Giữa margin với Border)
- Outline : Vẽ 1 đường (Margin) - Outline - (Border)
-
Các thuộc tính Outline
-
outline-style :solid => Set kiểu outline
-
- dotted - Defines a dotted outline - dashed - Defines a dashed outline - solid - Defines a solid outline - double - Defines a double outline - groove - Defines a 3D grooved outline - ridge - Defines a 3D ridged outline - inset - Defines a 3D inset outline - outset - Defines a 3D outset outline - none - Defines no outline - hidden - Defines a hidden outline
-
- outline-color: red; => Set màu outline
- outline-width: 10px => Set độ dày của outline
-
outline-offset: 5px => Set khoản cách từ border đến outline
-
Viết tắt outline:
p.ex1 {outline: dashed;}
p.ex2 {outline: dotted red;}
p.ex3 {outline: 5px solid yellow;}
p.ex4 {outline: thick ridge pink;}
#div { color: red; /* Set màu outline*/ outline-style: sloid; /* Set kiểu outline*/ outline-width: 10px; /* Set độ dày outline*/ outline_offset: 5px; /* Set khoản trắng từ border đến outline*/ } #div2 { outline: 5px solid yellow; }
14. Text CSS
- Text : Set các thuộc tinh với text trong css
-
Các thuộc tính cơ bản của text
- color: red => Text Color set màu cho chữ
-
text-align: center => set vị trí chữ
- center: Giữa
- left: trái
- right: phải
-
text-decoration: Trang trí chữ
-
text-decoration-line: overline => dấu gạch của text
h1 { text-decoration-line: overline; } h2 { text-decoration-line: line-through; } h3 { text-decoration-line: underline; } p { text-decoration-line: overline underline; }
-
text-decoration-line: overline => dấu gạch của text
- text-transform: uppercase || lowercase || capitalize => set viết hoa viết thường trong text
-
Text Spacing: Set các thuộc canh lề - khoản cách giữa các chữ - khoản cách các dòng...
STT Thuộc tính Giá trị Ghi Chú 1 text-indent: 20px Thụt lề 2 letter-spacing: 5px Khoản cách đoạn văn 3 line-height: 0.8 Khoản cách giữa các dòng 4 word-spacing: 5px Khoản cách giữa chữ 5 white-space: 5px Khoản cách giữa khoản trắng - text-shadow: 2px 2px; => Set đổ bóng cho chữ
p { color: red; /* màu chữ */ text-align: center; /* căn chữ */ text-decoration-line: overline; /* kiểu chữ */ text-transform: uppercase /* Viết hoa viết thường chữ */ }
15. Font CSS
- Font : Set kiểu chữ cho text

-
Các thuộc tính của Font
- normal: kiểu thường
- italic: in nghiên
- oblique : chữ in xiêng
-
Viết Tắt thuộc tính font: kết hợp từ các thuộc tính sau
1. font-style : Kiểu font (normal hay italic) 2. font-variant : Viết thường hay viết hoa chữ nhỏ (normal || small caps) 3. font-weight : In đậm in nghiên 4. font-size/line-height : kích thước font 5. font-family : tên font
STT | Thuộc tính | Giá trị | Ghi Chú |
---|---|---|---|
1 | font-family: | "Times New Roman", Times, serif; | Các font sẽ được áp dụng nếu font đầu tiên ko có |
2 | font-style: |
|
Định dạng chữ nghiên hoặc thường |
3 | font-size: | 30px | Kích thước chữ |
4 | Google Fonts |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Sofia"> <style> body { font-family: "Sofia", sans-serif; } |
Sử dụng font của google |
5 | CSS Great Font Pairings | Link Tham Khảo | Các cặp font đẹp kết hợp với nhau |
p.a { font: 20px Arial, sans-serif; } p.b { font: italic small-caps bold 12px/30px Georgia, serif; } p.c { font-family : "Times New Roman", Times, serif; font-style: normal; font-size: 30px; font-weight: bold; font-variant: normal; }
16. Icon CSS
- Icon : Thêm Các Icon Website

-
Bước 1: Tìm 1 thư viện icon ví dụ như:
<script src="https://kit.fontawesome.com/yourcode.js" crossorigin="anonymous"></script> - Bước 2: Ta gọi tên class CSS vào thẻ <i class="tenclassicon"></i>
<!DOCTYPE html> <html> <head> <script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script> </head> <body> <i class="fas fa-cloud"></i> <i class="fas fa-heart"></i> <i class="fas fa-car"></i> <i class="fas fa-file"></i> <i class="fas fa-bars"></i> </body> </html>
17. Link CSS
- Link : Xử lý các sự kiện khi nhấn vào link
-
Các thuộc tính link:
- text-decoration: none; => Loại bỏ gạch chân ở thẻ a
-
Các hành động ở Link:
STT Thuộc tính Giá trị Ghi Chú 1 a: hover Khi người dùng đưa trỏ chuột vào thẻ a 2 a: visited Liên kết người dùng (Đã truy cập) 3 a: link Liên kết bình thường - người dùng chưa truy cập 4 a: active Liên kết người dùng nhấn chuột vào (chuột phải + chuột trái)
/* chưa làm gì link */ a:link { color: red; } /* Đã nhấn link */ a:visited { color: green; } /* Đưa chuột vào link */ a:hover { color: hotpink; } /* Nhấn chuột vào link */ a:active { color: blue; }
18. List CSS
- List : Hổ trợ chỉnh sửa các thẻ ul + li + ol
-
Các thuộc tính của List
- circle => hình tròn
- square => hình vuôn
- upper-roman => Số
- lower-alpha => Số la mã
- outside => Bên ngoài
- inside => Bên trong
-
Short List:
Viết ngắn code list
1. list-style-type /* Kiểu List */ 2. list-style-position /* Bên ngoài hay bên trong */ 3. list-style-image /* hình ảnh của list */
STT | Thuộc tính | Giá trị | Ghi Chú |
---|---|---|---|
1 | list-style-type: |
|
Kiểu của ul + li + ol |
2 | list-style-image: | url('sqpurple.gif'); | Kiểu li là 1 hình ảnh |
3 | list-style-position: |
|
Liên kết bình thường - người dùng chưa truy cập |
ul { list-style: square inside url("sqpurple.gif"); } ol { list-style-type: circle; list-style-position : outside; list-style-image:url('sqpurple.gif'); }
19. Table CSS
- Table CSS : Các thuộc tính hổ trợ Table HTML
-
Các thuộc tính set Table
- border-collapse: collapse; /* Set border cho bảng */
- with + textAlign : Căn chữ và độ rộng
- vertical-align: bottom; /* set chữ ở dưới */
- tr:nth-child(even) {} */Set row đầu riêng */
- Responsive Table: style="overflow-x:auto;
<div style="overflow-x:auto;"> <table> ... table content ... </table> </div>
STT | Thuộc tính | Giá trị | Ghi Chú |
---|---|---|---|
1 | border-collapse: | collapse | Border của Table |
2 | tr:nth-child(even) {} | background-color: coral; | Chọn vào row đầu tiên |
table { border-collapse: collapse; text-aligin:center; with: 100%; vertical-align: center; } table:nth-child(even){ background-color: coral; }
20. Display CSS
- Display: Xác định Element là loại Inline hay block
- Inline : là kích thước của Element tuỳ theo nội dung
- Các phần tử inline chỉ chiếm không gian vừa đủ với nội dung của chúng, không mở rộng ra hết chiều rộng của phần tử chứa.
- Chiều rộng và chiều cao của các phần tử inline không thể được thay đổi bằng CSS (ví dụ: width và height không có tác dụng).
-
Các thẻ Inline:
- <span>;
- <a>
- <img>
- Block : là kích thước của Element lúc nào cũng chiếm hết Width của màn hình
-
Các thẻ Block:
- <div>;
- <h1-h6>
- <p
- <header
- ............
- Inline-block là là các thẻ Element được bo theo nộ dung (tuy nhiên bạn sẽ set được width và height)
-
-
Flex
- Flex: Xếp các Element bên trong thành từng khối hàng ngang - nhưng width của cha vẫn là 100%
- Inline-flex: Xếp các Element bên trong thành từng khối hàng ngang - nhưng width của cha là bằng width các con cộng lại
-
flex: Kết hợp với 2 thuộc tính:
- flex-direction:Căn theo row hoặc colum (ngang và dọc)
- justify-content: (căn chỉnh các vị trí content center + space-evenly + left + right)
- Gird: Xếp các Element con thành hàng ngang (mỗi Element chiếm 100% width cha)
- Inline-Gird: Xếp các Element con thành hàng ngang (width Element con = width content + width cha = width các con)

span { display: block; } li { display: inline; } h1.hidden { display: none; /* ẩn mất luôn không gian */ } h1.hidden { visibility: /* ẩn nhưng vẫn chiếm không gian*/; }
21. Width and Max Width + margin:auto CSS
- Việc kết hợp giữa width và max-width + margin: auto : thì khi đó ta có 1 thẻ div dược canh lề đều tự động 2 bên. Phần từ được gọi luôn ở giữa
div.ex1 { width: 500px; margin: auto; border: 3px solid #73AD21; } div.ex2 { max-width: 500px; margin: auto; border: 3px solid #73AD21; }
22. Position CSS (Thiết lập vị trí của 1 Element nổi lên 1 Element khác)

- Position : Tạo 1 đối tượng nằm nổi nên website
-
Các thuộc tính của Position:
STT | Thuộc tính | Giá trị | Set Vị Trí | Ghi Chú |
---|---|---|---|---|
1 | position: | static | Không Set Được | Mặc định của website + thuộc tính cố định 1 chỗ |
2 | position: | relative |
{ top: 0px; right: 50px; left: 0px; bottom: 0px; } |
Tạo 1 thẻ nằm trên website có vị trí xác định. (vị trí của trình duyệt toạ độ) |
2 | position: | absolute |
{ top: 0px; right: 50px; left: 0px; bottom: 0px; } |
Tạo 1 thẻ nằm trên website có vị trí xác định. (Toạ độ của nó sẽ là thẻ cha của nó có giá trị là
postion:relative)
![]() |
3 | position: | fixed |
{ top: 0px; right: 50px; left: 0px; bottom: 0px; } |
Tạo 1 thẻ nằm trên website. Thẻ này luôn nổi trên dù bạn có cuộn website đến đây
sử dụng để cố định vị trí của một phần tử trên trang web. Phần tử được đặt ở một vị trí cụ thể trên cửa sổ trình duyệt và không di chuyển khi người dùng cuộn trang |
4 | position: | sticky |
{ top: 0px; right: 50px; left: 0px; bottom: 0px; } |
Cách hoạt động của position: sticky |
p { color: red; text-align: center; }
23. Z-Index CSS
- Z-Index : Khi ta tạo các Element bằng position chồng lên nhau - bây giờ người dùng muốn sắp xếp cách thức hiển thị thì ta dùng Z-index (Z-Index càng lớn thì nó đc nằm trên cùng)


- Nếu không gán Z-index: thì sẽ là thứ tự khai báo của HTML. Nào khai bao sau thì nó sẽ được lên đầu.
<style> .container { position: relative; } .black-box { position: relative; z-index: 1; border: 2px solid black; height: 100px; margin: 30px; } .gray-box { position: absolute; z-index: 3; background: lightgray; height: 60px; width: 70%; left: 50px; top: 50px; } .green-box { position: absolute; z-index: 2; background: lightgreen; width: 35%; left: 270px; top: -15px; height: 100px; } </style>
24. Overflow CSS (Xử lý ly nội dung vượt quá kích thước Element chứa nó)
- Overflow : Xử lý các khi nội dung vượt quá box

-
Các thuộc tính:
STT | Thuộc tính | Giá trị | Ghi Chú |
---|---|---|---|
1 | Overflow: | visible | Cho nội dung vượt ra ngoài box |
2 | Overflow: | hidden | Nếu nội dung vượt ra box : thì ẩn đi |
3 | Overflow: | scroll | Nếu nội dung vượt ra box : tạo thanh roll để cuộn theo nội dung |
4 | Overflow: | auto | Nếu nội dung vượt ra box : tạo thanh roll để cuộn theo nội dung |
4 | Overflow: | overflow-x and overflow-y | Nếu nội dung vượt ra box : tạo thanh roll thanh và dọc |
#div { overflow: visible; } #div1 { overflow: hidden; } #div2 { overflow: scroll; } #div3 { overflow: auto; } div { overflow-x: hidden; /* ẩn ngang */ overflow-y: scroll; /* tạo croll dọc */ }
25. Float CSS + Clear
- Float CSS : Ta muốn đẩy 1 Element sang Trái hoặc sang phải
- Clear CSS : Trái ngược với float - nó sẽ ngăn chặn thẻ sau ảnh hưởng float với thẻ trước ví dụ: Ta có 3 Element thì 2 Element thì dùng float 1 Element còn lại thì không bị ảnh hưởng float của 2 thẻ còn lại thì dùng clear
- Float: thường được dùng đẻ tạo các thanh menu trên header


<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Float and Clear Example</title> <style> .box { /* Box không muốn ảnh hưởng float */ width: 100px; height: 100px; margin: 10px; background-color: lightblue; } .float-left { float: left; /* Đưa box về bên trái */ } .float-right { float: right; /* Đưa box về phải phải */ } .clear-both { clear: both; /* Ngăn ảnh hưởng của 2 float trên */ } </style> </head> <body> <div class="box float-left">Float Left</div> <div class="box float-right">Float Right</div> <div class="clear-both"></div> /* Sau khi có clear */ <div class="box">No Float</div> /* Thẻ sau clear sẽ bình thường */ </body>
26. Display:inline-block CSS
- inline :Các thẻ sử dụng inline là khối được bo theo content (không chịu ảnh hưởng với width và height trong css)
- inline-block: hoạt động tương tự như inline + tuy nhiên khác là có thể set Width và Height cho các thẻ

<style> span.a { display: inline; /* the default for span */ width: 100px; height: 100px; padding: 5px; border: 1px solid blue; background-color: yellow; } span.b { display: inline-block; width: 100px; height: 100px; padding: 5px; border: 1px solid blue; background-color: yellow; } span.c { display: block; width: 100px; height: 100px; padding: 5px; border: 1px solid blue; background-color: yellow; } </style> </head> <body> <h1>The display Property</h1> <h2>display: inline</h2> <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat scelerisque elit sit amet consequat. Aliquam erat volutpat. <span class="a">Aliquam</span> <span class="a">venenatis</span> gravida nisl sit amet facilisis. Nullam cursus fermentum velit sed laoreet. </div> <h2>display: inline-block</h2> <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat scelerisque elit sit amet consequat. Aliquam erat volutpat. <span class="b">Aliquam</span> <span class="b">venenatis</span> gravida nisl sit amet facilisis. Nullam cursus fermentum velit sed laoreet. </div> <h2>display: block</h2> <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat scelerisque elit sit amet consequat. Aliquam erat volutpat. <span class="c">Aliquam</span> <span class="c">venenatis</span> gravida nisl sit amet facilisis. Nullam cursus fermentum velit sed laoreet. </div>
27. Layout CSS (Căn Giữa + Trái Phải)
- Căn Giữa Thẻ : Để căn giữa 1 Element ta thường dùng margin: auto
<div class="center"> <p>Hello World!</p> </div> ----CSS----------------- <style> .center { margin: auto; width: 60%; border: 3px solid #73AD21; padding: 10px; } </style>
- Căn Giữa Text : Để căn giữa 1 Text ta thường dùng text-align:center
<div class="center"> <p>Hello World!</p> </div> ----CSS----------------- <style> .center { text-align: center; border: 3px solid green; } </style>
- Căn Trái Phải: Để căn trái phải 1 Element ta thường dùng postion:absolute
<div class="right"> <p>In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.</p> </div> ----CSS----------------- <style> .right { position: absolute; right: 0px; width: 300px; border: 3px solid #73AD21; padding: 10px; } </style>
- Căn Trái Phải: Để căn trái phải 1 Element ta thường dùng float float:left|right
<div class="left"> <p>In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.</p> </div> ----CSS----------------- <style> .left { float: left; width: 300px; border: 3px solid #73AD21; padding: 10px; } </style>
- Sửa lỗi float: Nếu một phần tử cao hơn phần tử chứa nó và được thả nổi, nó sẽ tràn ra ngoài vùng chứa của nó
ta dùng clear:both
<div> <img class="img1" src="pineapple.jpg" alt="Pineapple" width="170" height="170"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet... </div> <h2 style="clear:right">With New Modern Clearfix</h2> <p>Add the clearfix hack to the containing element, to fix this problem:</p> <div class="clearfix"> <img class="img2" src="pineapple.jpg" alt="Pineapple" width="170" height="170"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet... </div> ----CSS----------------- <style> div { border: 3px solid #4CAF50; padding: 5px; } .img1 { float: right; } .img2 { float: right; } .clearfix::after { content: ""; clear: both; display: table; } </style>
- Căn Giữa (Chiều Dọc Dùng Vertically ) Để Căn Giữa Đối Tượng Theo Chiều Dọc dùng padding: 70px
0;
<div class="center"> <p>I am vertically and horizontally centered.</p> </div> ----CSS----------------- <style> .center { padding: 70px 0; border: 3px solid green; text-align: center; } </style>
- Căn Giữa (Chiều Dọc Dùng Vertically ) Để Căn Giữa Đối Tượng Theo Chiều Dọc dùng Flexbox
<div class="center"> <p>I am vertically and horizontally centered.</p> </div> ----CSS----------------- <style> .center { display: flex; justify-content: center; align-items: center; height: 200px; border: 3px solid green; } </style>
- Căn Giữa (Chiều Dọc Dùng Vertically ) Để Căn Giữa Đối Tượng Theo Chiều Dọc dùng position &
transform
<div class="center"> <p>I am vertically and horizontally centered.</p> </div> ----CSS----------------- <style> .center { height: 200px; position: relative; border: 3px solid green; } .center p { margin: 0; position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } </style>
28. Combinators (kết Hợp Lấy Các Thẻ CSS) CSS
- Combinators : kết hợp với các dấu ( " " > + ~ để chọn các element HTML)
- element element: div p (Nằm trong) => Lấy tất cả thẻ p nằm trong thẻ div
- element>element: div>p (Là Con) => Lấy tất cả phần tử p là con của div
- element+element: div+p (Phần tử đầu tiên) => lấy phần tử p đầu tiên trong thẻ div
- element~element: div~p (Đứng trước)=> lấy tất cả phần tử p đứng trước div
STT | Cách Viết | Mẫu | Ghi Chú | Code | Result |
---|---|---|---|---|---|
1 | element element | div p | Lấy tất cả thẻ p nằm trong thẻ div |
<body> <div> <p>Paragraph 1 nằm trong div.</p> <p>Paragraph 2 nằm trong div</p> <section><p>Paragraph 2 nằm trong div</p></section> </div> <p>Paragraph 4. Not in a div.</p> <p>Paragraph 5. Not in a div.</p> </body> --------CSS ---------------- div p { background-color: yellow; } |
![]() |
2 | element>element | div > p | Lấy tất cả thẻ p là con của thẻ div |
<body> <h2>Child Selector</h2> <p>The child selector (>) selects all elements that are the children of a specified element.</p> <div> <p>Paragraph 1 trong thẻ div.</p> <p>Paragraph 2 trong thẻ div</p> <section> <!-- not Child but Descendant --> <p>Paragraph 3 trong thẻ div (Con của thẻ session).</p> </section> <p>Paragraph 4 trong thẻ div.</p> </div> <p>Paragraph 5. không trong thẻ div.</p> <p>Paragraph 6. không trong thẻ div</p> </body> --------CSS ---------------- div > p { background-color: yellow; } |
![]() |
3 | element+element | div + p | Lấy thẻ p đầu tiên của div |
<body> <div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> </div> <p>Paragraph 3. After a div.</p> <p>Paragraph 4. After a div.</p> <div> <p>Paragraph 5 in the div.</p> <p>Paragraph 6 in the div.</p> </div> <p>Paragraph 7. After a div.</p> <p>Paragraph 8. After a div.</p> </body> --------CSS ---------------- div + p { background-color: yellow; } |
![]() |
4 | element~element | div ~ p | Lấy thẻ p đứng trước thẻ div |
<body> <p>Paragraph 1.</p> <div> <p>Paragraph 2.</p> </div> <p>Paragraph 3.</p> <code>Some code.</code> <p>Paragraph 4.</p> </body> --------CSS ---------------- div ~ p { background-color: yellow; } |
![]() |
29. Pseudo Element (Các hành động thuộc tính hổ trợ CSS) CSS
- Pseudo Element : Các hành động thuộc tính hổ trợ CSS
Bộ chọn Ví dụ Mô tả ví dụ Ví dụ bằng code :active a:active Chọn liên kết đang hoạt động a:active { color: red; }
:checked input:checked Chọn mọi phần tử <input> đã được chọn input:checked { background-color: yellow; }
:disabled input:disabled Chọn mọi phần tử <input> bị vô hiệu hóa input:disabled { background-color: gray; }
:empty p:empty Chọn mọi phần tử <p> không có phần tử con p:empty { background-color: lightblue; }
:enabled input:enabled Chọn mọi phần tử <input> được kích hoạt input:enabled { background-color: lightgreen; }
:first-child p:first-child Chọn mọi phần tử <p> là con đầu tiên của phần tử cha p:first-child { font-weight: bold; }
:first-of-type p:first-of-type Chọn mọi phần tử <p> là phần tử <p> đầu tiên của phần tử cha p:first-of-type { color: blue; }
:focus input:focus Chọn phần tử <input> đang được focus input:focus { border: 2px solid red; }
:hover a:hover Chọn liên kết khi di chuột qua a:hover { text-decoration: underline; }
:in-range input:in-range Chọn phần tử <input> có giá trị trong phạm vi xác định input:in-range { background-color: lightyellow; }
:invalid input:invalid Chọn mọi phần tử <input> có giá trị không hợp lệ input:invalid { border-color: red; }
:lang(language) p:lang(it) Chọn mọi phần tử <p> có giá trị thuộc tính lang bắt đầu bằng "it" p:lang(it) { font-style: italic; }
:last-child p:last-child Chọn mọi phần tử <p> là con cuối cùng của phần tử cha p:last-child { font-style: italic; }
:last-of-type p:last-of-type Chọn mọi phần tử <p> là phần tử <p> cuối cùng của phần tử cha p:last-of-type { color: green; }
:link a:link Chọn mọi liên kết chưa được truy cập a:link { color: blue; }
:not(selector) :not(p) Chọn mọi phần tử không phải là phần tử <p> :not(p) { background-color: lightgray; }
:nth-child(n) p:nth-child(2) Chọn mọi phần tử <p> là con thứ n của phần tử cha p:nth-child(2) { color: purple; }
:nth-last-child(n) p:nth-last-child(2) Chọn mọi phần tử <p> là con thứ n từ cuối của phần tử cha p:nth-last-child(2) { color: orange; }
:nth-last-of-type(n) p:nth-last-of-type(2) Chọn mọi phần tử <p> là phần tử <p> thứ n từ cuối của phần tử cha p:nth-last-of-type(2) { background-color: lightcoral; }
:nth-of-type(n) p:nth-of-type(2) Chọn mọi phần tử <p> là phần tử <p> thứ n của phần tử cha p:nth-of-type(2) { background-color: lightcyan; }
:only-of-type p:only-of-type Chọn mọi phần tử <p> là phần tử <p> duy nhất của phần tử cha p:only-of-type { background-color: lightgoldenrodyellow; }
:only-child p:only-child Chọn mọi phần tử <p> là con duy nhất của phần tử cha p:only-child { background-color: lightseagreen; }
:optional input:optional Chọn mọi phần tử <input> không bắt buộc nhập input:optional { background-color: lightsteelblue; }
:out-of-range input:out-of-range Chọn mọi phần tử <input> với giá trị nằm ngoài phạm vi xác định input:out-of-range { background-color: lightpink; }
:read-only input:read-only Chọn mọi phần tử <input> chỉ đọc input:read-only { background-color: lightcoral; }
:read-write input:read-write Chọn mọi phần tử <input> có thể đọc và ghi input:read-write { background-color: lightgreen; }
:required input:required Chọn mọi phần tử <input> bắt buộc nhập input:required { background-color: lightsalmon; }
:root :root Chọn phần tử gốc của tài liệu (root) :root { font-size: 16px; }
:target #news:target Chọn phần tử có id được xác định trong URL #news:target { background-color: lightcoral; }
:valid input:valid Chọn mọi phần tử <input> với giá trị hợp lệ input:valid { border-color: green; }
:visited a:visited Chọn mọi liên kết đã được truy cập a:visited { color: purple; }
- Pseudo Class : Các lớp hổ trợ chèn trước hoặc sau nào đó 1 nội dung nhất định
Thuộc tính Pseudo Element | Selector | Mô tả | Ví dụ CSS |
---|---|---|---|
::after | p::after | Chèn nội dung sau mỗi phần tử <p> |
|
::before | p::before | Chèn nội dung trước mỗi phần tử <p> |
|
::first-letter | p::first-letter | Chọn chữ cái đầu tiên của mỗi phần tử <p> |
|
::first-line | p::first-line | Chọn dòng đầu tiên của mỗi phần tử <p> |
|
::marker | ::marker | Chọn dấu đánh dấu của các mục trong danh sách |
|
::selection | p::selection | Chọn phần được người dùng chọn của một phần tử |
|

p { color: red; text-align: center; }
30. Opacity (Làm mờ )
- Opacity (Làm mờ ) : Làm mờ hình ảnh với số liệu là từ 0.0 đến 1.1

img { opacity: 0.5; }


31. Menu CSS
- Menu Ngang
<div id="menu"> <ul> <li> <a href="#" target="_blank" rel="noopener noreferrer">Home</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">About</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">Contact</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">RSS</a> </li> </ul> </div>
#menu { width: 100%; height: 50px; background-color: black; } #menu > ul { line-height: 50px; list-style-type: none; text-align: center; } #menu > ul > li { float: left; } #menu > ul > li :hover { background-color: #f8f8f2; color: black; } #menu > ul > li > a { text-decoration: none; color: #f8f8f2; padding: 0px 20px; display: block; } .active { background-color: rgba(107, 12, 12, 0.685); }
- Menu Dọc
<div id="menu-doc"> <ul> <li> <a href="#" class="active" target="_blank" rel="noopener noreferrer">Home</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">About</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">Contact</a> </li> <li> <a href="#" target="_blank" rel="noopener noreferrer">RSS</a> </li> </ul> </div>
#menu-doc { width: 30%; background-color: black; } #menu-doc > ul { margin: 0px; padding: 0px; list-style-type: none; } #menu-doc > ul > li :hover { background-color: #f8f8f2; color: black; } #menu-doc > ul > li :active { background-color: #73ad21; } #menu-doc > ul > li a { text-decoration: none; color: #ffff; display: block; font-size: 20px; padding: 10px; } .active { background-color: rgba(107, 12, 12, 0.685); }
32. DropDown CSS (Làm menu đổ xuống)
- DropDown CSS : Làm Menu Đổ xuống
<div class="menu-dropdown">
<span>Mouse over me</span>
<div class="sub-dropdown">
<p>Hello World!</p>
</div>
</div>
.menu-dropdown { position: relative; border: solid 2px blueviolet; display: inline; padding: 5px; border-radius: 10px; background-color: #ffff; } .menu-dropdown:hover { cursor: pointer; } .menu-dropdown:hover .sub-dropdown { display: block; } .sub-dropdown { display: none; position: absolute; top: 30px; right: 0px; left: 0px; z-index: 1; background-color: #73ad21; width: 100%; }
33. Thư Viện Ảnh CSS
- Gallery Image : Tạo Các Thư Viện Ảnh

Thông Tin Hình Ảnh 1

Thông Tin Hình Ảnh 1

Thông Tin Hình Ảnh 1
<div class="gallery-image">
<div class="gallery-item">
<img src="./img/img1.jpg" alt="" srcset="">
<p class="des-image">Thông Tin Hình Ảnh 1</p>
</div>
<div class="gallery-item">
<img src="./img/img2.jpg" alt="" srcset="">
<p class="des-image">Thông Tin Hình Ảnh 1</p>
</div>
<div class="gallery-item">
<img src="./img/img3.jpg" alt="" srcset="">
<p class="des-image">Thông Tin Hình Ảnh 1</p>
</div>
</div>
/* Gallery image */ .gallery-image { display: flex; flex-direction: row; justify-content: space-between; } .gallery-item > img { width: 100%; height: auto; } .gallery-item { margin: 0px 10px; border: solid 5px #73ad21; border-radius: 5px; } .gallery-item:hover img { opacity: 0.5; } .des-image { text-align: center; padding: 10px; }
34. CSS Sprites (Cắt ảnh nhỏ từ 1 ảnh lớn bằng cách di chuyển toạ độ)
- CSS Sprites : Cắt ảnh nhỏ từ 1 ảnh lớn bằng cách di chuyển toạ độ
Cách xác định tọa độ của hình ảnh nền (0, 0): Điểm bắt đầu (gốc tọa độ) nằm ở góc trên cùng bên trái của hình ảnh nền. Dương trên trục X và trục Y: Di chuyển điểm bắt đầu của hình ảnh nền về phía phải và phía dưới. Âm trên trục X và trục Y: Di chuyển điểm bắt đầu của hình ảnh nền về phía trái và phía trên.
Toạ Độ: (0, 0)

#sprites-instagram { width: 151px; // xác định 1 ô vuông có chiều dài height: 140px; // Xác định 1 ổ vuôn có chiều rộng background: url("/img/spritesCSS.png") -24px -24px; // toạ độ sẽ là góc trên bên trái với (X, Y) => Ô vuôn sẽ bắt đầu từ toạ độ này } #sprites-facebook { width: 151px; height: 170px; background: url("/img/spritesCSS.png") -230px 0; }
35. Attribute Selectors CSS (Dùng thuộc tính CSS để chọn thẻ HTML)
- Attribute Selectors CSS: Thường trong các Element có các thuộc tính để set cho Thẻ HTML. Ta
cũng có thể dùng
các thuộc tính này để chọn Element có giá trị tương ứng
Ví Dụ: Thẻ Input có nhiều loại để chỉ định riêng 1 loại và set css cho nó thì ta dùng như sau:
input[type="text"] { width: 150px; display: block; margin-bottom: 10px; background-color: yellow; } input[type="button"] { width: 120px; margin-left: 35px; display: block; }
Các Cách Attribute Selected
Atribute | Selector | Mô tả | Ví dụ CSS |
---|---|---|---|
[attribute~="value"] | a [target="_blank"] | Chọn thẻ a có targer là "_blank" |
|
[attribute|="value"] | [title~="flower"] | Chọn tất cả các Atribute có title là "flower" |
|
[attribute|="value"] | [class|="top"] | Chọn tất cả các Atribute có class có từ là "top" |
|
[attribute^="value"] | [class^="top"] | Chọn tất cả các Atribute có class có từ là "top" |
|
[attribute$="value"] | [class$="test"]
a[href$=".pdf"] |
Chọn tất cả các Atribute có class từ là "test" |
|
[attribute*="value"] | [class$="test"]
a[href*="w3schools"] |
Chọn tất cả các Atribute có class từ là "te" |
|
36. Form CSS
- Form CSS : Các Css hổ trợ form
- width: 100%; Set độ rộng
- padding: 12px 20px; Set to input to lên
- border: 2px solid red; Set border cho input
- border-bottom: 2px solid red; Set border-bottom
-
input[type=text] { transition: width 0.4s ease-in-out; } input[type=text]:focus { width: 100%; }
-
input[type=text] { background-color: white; background-image: url('searchicon.png'); background-position: 10px 10px; background-repeat: no-repeat; padding-left: 40px; }
37. Counters CSS
- Counters CSS : Đánh Số theo kiểu 1 cách tự động
1. Nội Dung 1.1 Nội Dung Con 1 1.2 Nội Dung Con 2 2. Nội Dung 2.1 Nội Dung Con 1 2.2 Nội Dung Con 2
<div class="section">
<h2>Section Title</h2>
<div class="sub-section">
<h3>Sub-section 1</h3>
<p>This is some text in sub-section 1.</p>
</div>
<div class="sub-section">
<h3>Sub-section 2</h3>
<p>This is some text in sub-section 2.</p>
</div>
<div class="sub-section">
<h3>Sub-section 3</h3>
<p>This is some text in sub-section 3.</p>
</div>
</div>
body { counter-reset: section; } .section { counter-reset: sub-section; } .section > h2::before { counter-increment: section; content: "Section " counter(section) ": "; } .sub-section > h3::before { counter-increment: sub-section; content: counter(section) "." counter(sub-section) " "; }
- counter-reset: section; khởi tạo bộ đếm section cho toàn bộ tài liệu. Mỗi lần gặp .section, bộ đếm section sẽ được đặt lại.
- counter-reset: sub-section; khởi tạo bộ đếm sub-section cho mỗi .section, đặt lại bộ đếm sub-section mỗi khi gặp .section
- counter-increment: section; tăng giá trị của bộ đếm section mỗi khi gặp một h2 trong .section
- content: "Section " counter(section) ": "; thêm tiền tố "Section" và giá trị của bộ đếm section vào trước nội dung của h2.
- counter-increment: sub-section; tăng giá trị của bộ đếm sub-section mỗi khi gặp một h3 trong .sub-section.
- content: counter(section) "." counter(sub-section) " "; thêm giá trị của bộ đếm section và sub-section theo định dạng "section.sub-section" vào trước nội dung của h3.

38. Website Layout CSS (Cấu trúc của 1 website)
- Website Layout : Cấu trúc khung sường của 1 website

- Header (Phần đầu): Thường chứa tên hoặc logo website
- Navigation (Phần Menu website): Thường là 1 menu của website trỏ đến các
- Content (Nội Dung Website): Chứa nội dung chính của website
- Footer (Thông tin website): Chứa thông tin số điện thoại và địa chỉ
p { color: red; text-align: center; }
39. Đơn Vị Tính CSS
- Đơn Vị Tính CSS : Là Đơn vị như là px rem vh vw
Đơn Vị | Ví Dụ | Giải thích ví dụ đơn vị |
px (pixels) | width: 100px; |
Chiều rộng của phần tử là 100 pixels. |
em | width: 2em; |
Chiều rộng của phần tử bằng 2 lần kích thước font của phần tử cha. |
rem (root em) | width: 2rem; |
Chiều rộng của phần tử bằng 2 lần kích thước font của phần tử gốc (thường là <html>). |
% (percentage) | width: 50%; |
Chiều rộng của phần tử bằng 50% chiều rộng của phần tử cha. |
vw (viewport width) | width: 50vw; |
Chiều rộng của phần tử bằng 50% chiều rộng của viewport. |
vh (viewport height) | height: 50vh; |
Chiều cao của phần tử bằng 50% chiều cao của viewport. |
vmin | width: 50vmin; |
Chiều rộng của phần tử bằng 50% của giá trị nhỏ hơn giữa chiều rộng và chiều cao viewport. |
vmax | width: 50vmax; |
Chiều rộng của phần tử bằng 50% của giá trị lớn hơn giữa chiều rộng và chiều cao viewport. |
cm (centimeters) | width: 10cm; |
Chiều rộng của phần tử là 10 centimeters. |
mm (millimeters) | width: 100mm; |
Chiều rộng của phần tử là 100 millimeters. |
in (inches) | width: 2in; |
Chiều rộng của phần tử là 2 inches. |
pt (points) | width: 12pt; |
Chiều rộng của phần tử là 12 points (1pt = 1/72 inch). |
pc (picas) | width: 1pc; |
Chiều rộng của phần tử là 1 pica (1pc = 12pt). |
ch | width: 10ch; |
Chiều rộng của phần tử bằng độ rộng của 10 ký tự "0" trong font hiện tại. |
ex | height: 5ex; |
Chiều cao của phần tử bằng 5 lần chiều cao của chữ cái "x" trong font hiện tại. |
fr (fraction) | grid-template-columns: 1fr 2fr; |
Định nghĩa lưới với cột đầu tiên chiếm 1 phần và cột thứ hai chiếm 2 phần. |
width: 2em; /* 32px nếu kích thước font của phần tử cha là 16px */ width: 2rem; /* 32px nếu kích thước font của html là 16px */ width: 50%; /* 50% chiều rộng của phần tử cha */ width: 50vw; /* 50% chiều rộng của viewport */ height: 50vh; /* 50% chiều cao của viewport */ width: 50vmin; /* 50% của giá trị nhỏ hơn giữa chiều rộng và chiều cao viewport */ width: 50vmax; /* 50% của giá trị lớn hơn giữa chiều rộng và chiều cao viewport */
40. Mức Độ Ưu Tiên Tính Điểm CSS
- Specificity CSS : Các các chèn css nó sẽ có điểm số khác nhau, nếu 1 Element có cùng 1 thuộc tính css
ở nhiều nơi thì dựa vào tổng điểm để xem CSS nào dược thực thi
Selector Ví Dụ Mức độ ưu tiên Inline styles <div style="color: red;">
1000 ID selector #myId
100 Class, pseudo-class, attribute .myClass
,:hover
,[type="text"]
10 Element, pseudo-element div
,::before
1 Universal selector *
0 Combinators div > p
,div + p
,div ~ p
,div p
Kết hợp mức độ ưu tiên của các selector liên quan - !important: Nếu thuộc tính css nào được gán !important thì nó sẽ là điểm cao nhất thuộc tính sẽ này được áp dụng luôn
#myid { background-color: blue !important; // áp dụng này vì có important } .myclass { background-color: gray !important; // áp dụng này vì có important } p { background-color: red !important; // áp dụng này vì có important } <p>This is some text in a paragraph.</p> <p class="myclass">This is some text in a paragraph.</p> <p id="myid">This is some text in a paragraph.</p>
41. Math CSS
- Tính Toán CSS : Các hàm tính toán như calc() + max() + min()
- width: calc(100%/2) hàm tính toán ví dụ calc(100%/3)
- width: min(50%, 300px); lấy giá trị nhỏ nhất
- width: Max(50%, 300px); lấy giá trị lớn nhất

#div1 { position: absolute; left: 50px; width: calc(100% - 100px); border: 1px solid black; background-color: yellow; padding: 5px; } #div1 { background-color: yellow; height: 100px; width: max(50%, 300px); } #div1 { background-color: yellow; height: 100px; width: min(50%, 300px); }
42. (CSS Nâng Cao) Bo Tròn Gốc
- Bo Tròn Gốc :Để bo tròn gốc của 1 Element ta sử dụng thuộc tính border-radis

Thuộc tính | Giải thích |
---|---|
border-radius | Thuộc tính viết tắt để thiết lập tất cả bốn thuộc tính border-*-*-radius |
border-top-left-radius | Định nghĩa hình dạng của viền góc trên bên trái |
border-top-right-radius | Định nghĩa hình dạng của viền góc trên bên phải |
border-bottom-right-radius | Định nghĩa hình dạng của viền góc dưới bên phải |
border-bottom-left-radius | Định nghĩa hình dạng của viền góc dưới bên trái |
#rcorners1 { border-radius: 15px 50px 30px 5px; background: #73AD21; padding: 20px; width: 200px; height: 150px; } #rcorners2 { border-radius: 15px 50px 30px; background: #73AD21; padding: 20px; width: 200px; height: 150px; } #rcorners3 { border-radius: 15px 50px; background: #73AD21; padding: 20px; width: 200px; height: 150px; } #rcorners4 { border-radius: 15px; background: #73AD21; padding: 20px; width: 200px; height: 150px; }
43. (CSS Nâng Cao) Border Image (Thêm Viền bằng ảnh)
- Border Image : Thêm viền bằng image

Thuộc tính | Giải thích | Ví dụ Code |
---|---|---|
border-image | Thuộc tính viết tắt để thiết lập tất cả các thuộc tính border-image-* | border-image: url('border-image.png') 30 round; |
border-image-source | Xác định đường dẫn tới hình ảnh được sử dụng làm viền | border-image-source: url('border-image.png'); |
border-image-slice | Xác định cách cắt hình ảnh viền | border-image-slice: 30%; |
border-image-width | Xác định độ rộng của hình ảnh viền | border-image-width: 10px; |
border-image-outset | Xác định mức độ mở rộng của vùng hình ảnh viền vượt ra ngoài hộp viền | border-image-outset: 5px; |
border-image-repeat | Xác định liệu hình ảnh viền nên được lặp lại, làm tròn hay kéo dài | border-image-repeat: round; |
.border-img{ border:solid 10px transparent; padding: 15px; border-image: url("./img/bordertemplate.png") 50 round; }
- 50: Đây là giá trị cho thuộc tính border-image-slice, chỉ ra tỷ lệ phần trăm của hình ảnh được cắt để tạo ra viền. Trong trường hợp này, hình ảnh được cắt tại 50% từ mỗi cạnh của nó.
- round: Đây là giá trị cho thuộc tính border-image-repeat, chỉ định cách hình ảnh viền sẽ được sử dụng. round có nghĩa là hình ảnh viền sẽ được lặp lại và làm tròn để vừa khít với kích thước của hộp viền.
44. (CSS Nâng Cao) CSS Multiple Backgrounds (1 Element có thể add nhiều backgroup trong cùng 1 thuộc tính)
- CSS Multiple Backgrounds:Một thuộc tính background-image có thể add nhiều ảnh
#example1 { background-image: url(img_flwr.gif), url(paper.gif); background-position: right bottom, left top; background-repeat: no-repeat, repeat; }
- Code ở trên được thêm 2 background vào 1 thẻ cách nhau bở dấu phẩy, ở các thuộc tính postion và repeat cũng tương tự cách nhau bởi dấu phẩy
#example1 { background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat; }
- Code ở trên thì viết tắt các thuộc tính vào 1, Các thuộc tính lần lượt là url + postion + repeat
-
CSS Background Size: Set kích thước ở ảnh background
#div1 { background: url(img_flower.jpg); background-size: contain; background-repeat: no-repeat; } #div2 { background: url(img_flower.jpg); background-size: cover; background-repeat: no-repeat; }
- background-size: contain; kích thước ảnh sẽ bỏ đúng kích thước
- background-size: cover; kích thước ảnh sẽ phóng to hết khung hình
#div1 { background: url(img_flower.jpg); background-size: 100px 80px; background-repeat: no-repeat; }
- background-size: 100px 80px; Set kích thước luôn cho ảnh (Rộng + Cao)
#example1 { background: url(img_tree.gif) left top no-repeat, url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat; background-size: 50px, 130px, auto; }
- background-size: 50px, 130px, auto; Chỉ định kích thước cho nhiều ảnh
-
background-origin: Chỉ định vị trí bắt đầu của ảnh (border-box or padding-box (default) or
content-box)
#example1 { border: 10px solid black; padding: 35px; background: url(img_flwr.gif); background-repeat: no-repeat; } #example2 { border: 10px solid black; padding: 35px; background: url(img_flwr.gif); background-repeat: no-repeat; background-origin: border-box; } #example3 { border: 10px solid black; padding: 35px; background: url(img_flwr.gif); background-repeat: no-repeat; background-origin: content-box; }
- background-origin: padding-box; Chỉ định vị trí ảnh bắt đầu từ padding (Mặc định)
- background-origin: border-box; Chỉ định vị trí ảnh bắt đầu từ border
- background-origin: content-box; Chỉ định vị trí ảnh bắt đầu từ nội dung
-
background-clip: xác định phần nào của vùng nền (background area) của phần tử sẽ hiển thị nền
(border-box (default) or padding-box or
content-box)
#example1 { border: 10px dotted black; padding: 35px; background: yellow; } #example2 { border: 10px dotted black; padding: 35px; background: yellow; background-clip: padding-box; } #example3 { border: 10px dotted black; padding: 35px; background: yellow; background-clip: content-box; }
- background-clip: padding-box; Vùng nền của backgroup sẽ bao phủ cả padding
- background-clip: border-box; Vùng nền của backgroup sẽ bao phủ cả border (Mặc định)
- background-clip: content-box; Vùng nền của backgroup sẽ bao phủ cả gọn trong nội dung
44. (CSS Nâng Cao) CSS Color Keywords (Từ khoá màu bao gồm (transparent - trong suốt) - (currentcolor - Màu hiện tại) - (inherit - kế thừa) )
- CSS Color Keywords: (Từ khoá màu bao gồm (transparent - trong suốt) - (currentcolor - Màu hiện
tại) - (inherit - kế thừa) )
-
transparent: Trong Suốt
div.ex2 { background-color: transparent; border: 2px solid black; padding: 15px; }
- background-color: transparent; chỉ định background trong suốt ko có màu gì
-
currentcolor: Màu hiện tại
div { color: blue; border: 10px solid currentcolor; padding: 15px; }
- border: 10px solid currentcolor; vì div có màu hiện tại là "blue" thì border có thuộc tính currentcolor nên cũng sẽ mang màu "blue"
-
inherit : Màu kế thừa
div { border: 2px solid red; } span { border: inherit; }
- border: inherit; vì thẻ span có thẻ cha div là màu đỏ - nên thẻ span cũng sẽ có màu đỏ
-
transparent: Trong Suốt
45. (CSS Nâng Cao) CSS Gradients - Màu garian - background: linear-gradient(direction, color-stop1, color-stop2, ...);
- CSS Gradients - Màu garian - background: linear-gradient(direction, color-stop1, color-stop2, ...)
-
linear-gradient(direction, color-stop1, color-stop2, ...) Tạo ra radian theo đường thằng
background: linear-gradient(direction, color-stop1, color-stop2, ...);
- direction: Hướng của gradient. Có thể là một góc (như 90deg, 45deg), hoặc từ khóa (như to right, to bottom).
- color-stop: Điểm dừng của màu. Có thể chỉ định màu và vị trí của nó (như red 10%, blue 50%).
background: linear-gradient(to bottom, red, yellow);
- Gradient đơn giản từ trên xuống dưới
background: repeating-linear-gradient(to right, red, yellow 10%, green 20%);
- Gradient lặp lại
-
radial-gradient(shape size at position, start-color, ..., last-color); Tạo ra màu gradient từ
tâm hình tròn
background: radial-gradient(shape size at position, start-color, ..., last-color);
- shape: Hình dạng của gradient, có thể là circle (hình tròn) hoặc ellipse (hình elip). Giá trị mặc định là ellipse.
- size: Kích thước của gradient, có thể là closest-side, closest-corner, farthest-side, farthest-corner, hoặc các giá trị cụ thể (như 50% 50%).
- position: Vị trí của tâm gradient, có thể sử dụng từ khóa như center, top, bottom, left, right hoặc các giá trị phần trăm hay pixel cụ thể (như 50% 50%).
- start-color, last-color: Các màu bắt đầu và kết thúc của gradient, có thể chỉ định nhiều màu để tạo các dải màu chuyển tiếp.
background: radial-gradient(circle, red, yellow);
- Gradient hình tròn từ tâm
background: repeating-radial-gradient(circle at center, red, yellow 10%, green 20%);
- Gradient lặp lại
-
background-image: conic-gradient([from angle] [at position,] color [degree], color [degree],
...); Tạo ra màu gradient từ
hình nón
background-image: conic-gradient([from angle] [at position,] color [degree], color [degree], ...);
- from angle: (Tùy chọn) Góc bắt đầu của gradient, có thể sử dụng các đơn vị như deg (độ), rad (radian), grad (gradian) hoặc turn (vòng quay). Mặc định là 0deg.
- at position: (Tùy chọn) Vị trí của tâm gradient, có thể sử dụng từ khóa như center, top, bottom, left, right hoặc các giá trị phần trăm hay pixel cụ thể (như 50% 50%). Mặc định là center.
- color [degree]: Màu sắc và góc của màu đó. Góc xác định nơi màu đó xuất hiện.
background-image: conic-gradient(red, yellow, green);
- Gradient hình nón đơn giản
background-image: conic-gradient(from 0deg at center, red 0deg, yellow 120deg, green 240deg);
- Gradient lặp lại
46. (CSS Nâng Cao) Shadow Effects (Đổ bóng)
- Shadow Effects: Ta dùng CSS để đổ bóng cho 1 Element
-
text-shadow: x-offset y-offset blur-radius color; sử dụng để thêm bóng cho văn bản
text-shadow: x-offset y-offset blur-radius color;
- x-offset: Khoảng cách bóng đổ theo trục x (ngang). Có thể là giá trị dương (bóng đổ sang phải) hoặc giá trị âm (bóng đổ sang trái).
- y-offset: Khoảng cách bóng đổ theo trục y (dọc). Có thể là giá trị dương (bóng đổ xuống dưới) hoặc giá trị âm (bóng đổ lên trên).
- blur-radius: (Tùy chọn) Bán kính làm mờ của bóng đổ. Giá trị càng lớn thì bóng đổ càng mờ. Mặc định là 0 (không làm mờ).
- color: (Tùy chọn) Màu của bóng đổ. Nếu không chỉ định, mặc định sẽ sử dụng màu văn bản hiện tại.
p { text-shadow: 2px 2px 5px gray; }
- Bóng đổ cơ bản
h1 { text-shadow: 1px 1px 2px black, 2px 2px 5px red, 3px 3px 8px blue; }
- Bóng đổ với nhiều lớp
-
box-shadow: x-offset y-offset blur-radius spread-radius color; sử dụng để thêm bóng đổ cho các
phần tử, tạo ra hiệu ứng ba chiều
box-shadow: x-offset y-offset blur-radius spread-radius color;
- x-offset: Khoảng cách bóng đổ theo trục x (ngang). Có thể là giá trị dương (bóng đổ sang phải) hoặc giá trị âm (bóng đổ sang trái).
- y-offset: Khoảng cách bóng đổ theo trục y (dọc). Có thể là giá trị dương (bóng đổ xuống dưới) hoặc giá trị âm (bóng đổ lên trên).
- blur-radius: (Tùy chọn) Bán kính làm mờ của bóng đổ. Giá trị càng lớn thì bóng đổ càng mờ. Mặc định là 0 (không làm mờ).
- spread-radius: (Tùy chọn) Độ lan rộng của bóng đổ. Giá trị dương sẽ làm bóng đổ lớn hơn, giá trị âm sẽ làm bóng đổ nhỏ hơn. Mặc định là 0.
- color: (Tùy chọn) Màu của bóng đổ. Nếu không chỉ định, mặc định sẽ sử dụng màu văn bản hiện tại.
div { box-shadow: 10px 10px 5px gray; }
- Bóng đổ cơ bản
div { box-shadow: 10px 10px 5px gray, -10px -10px 5px red; }
- Bóng đổ với nhiều lớp
47. (CSS Nâng Cao) Text Effects CSS Text Overflow, Word Wrap, Line Breaking Rules, and Writing Modes (Thuộc tính xủ lý text)
- Text Effects :CSS Text Overflow, Word Wrap, Line Breaking Rules, and Writing Modes
Thuộc tính | Các giá trị của thuộc tính | Giải thích | Code mẫu | Hình Ảnh |
---|---|---|---|---|
text-overflow |
|
Quy định cách xử lý khi văn bản tràn ra ngoài khung chứa. |
|
![]() |
word-wrap |
|
Cho phép từ dài bị ngắt dòng và chuyển sang dòng tiếp theo. |
|
![]() |
word-break |
|
Quy định cách ngắt dòng cho văn bản khi từ quá dài hoặc không có dấu cách. |
|
![]() |
writing-mode |
|
Quy định hướng viết của văn bản. |
|
![]() |

p { color: red; text-align: center; }
48. (CSS Nâng Cao) Web Fonts (@font-face) Tạo 1 biến lưu font của bạn bằng file
- @font-face trong CSS được sử dụng để định nghĩa các phông chữ tùy chỉnh mà có thể được tải và sử dụng trên trang web. Điều này cho phép các nhà phát triển web sử dụng các phông chữ không chuẩn, không phụ thuộc vào các phông chữ mà người dùng đã cài đặt trên hệ thống của họ.

@font-face { font-family: 'MyCustomFont'; src: url('mycustomfont.woff2') format('woff2'), url('mycustomfont.woff') format('woff'); font-weight: normal; font-style: normal; } body { font-family: 'MyCustomFont', sans-serif; }
- @font-face: Đây là quy tắc CSS để khai báo một phông chữ mới.
- font-family: Tên của phông chữ sẽ được sử dụng trong CSS sau này (ví dụ: 'MyCustomFont').
- src: Đường dẫn đến tệp phông chữ. Bạn có thể chỉ định nhiều định dạng phông chữ khác nhau để đảm bảo tương thích với nhiều trình duyệt (ví dụ: woff2, woff, ttf).
- font-weight: (Tùy chọn) Định nghĩa độ đậm của phông chữ.
- font-style: (Tùy chọn) Định nghĩa kiểu chữ của phông chữ (ví dụ: normal, italic, oblique).
49. (CSS Nâng Cao) 2D Transforms: Dịch chuyển các element 2D
- 2D Transforms: Dịch chuyển các element 2D

Thuộc tính | Các giá trị của thuộc tính | Giải thích | Code mẫu | Hình Ảnh |
---|---|---|---|---|
translate() |
|
Dịch chuyển phần tử theo trục x và y. |
|
![]() |
rotate() |
|
Xoay phần tử quanh một điểm cố định theo góc chỉ định (đơn vị: deg). |
|
![]() |
scaleX() |
|
Thay đổi kích thước của phần tử theo trục x. |
|
|
scaleY() |
|
Thay đổi kích thước của phần tử theo trục y. |
|
![]() |
scale() |
|
Thay đổi kích thước của phần tử theo cả hai trục x và y. |
|
|
skewX() |
|
Làm nghiêng phần tử theo trục x. |
|
![]() |
skewY() |
|
Làm nghiêng phần tử theo trục y. |
|
|
skew() |
|
Làm nghiêng phần tử theo cả hai trục x và y. |
|
|
matrix() |
|
Áp dụng một phép biến đổi ma trận, kết hợp các phép dịch chuyển, xoay, làm nghiêng và thay đổi kích thước. |
|
![]() |
50. (CSS Nâng Cao) 3D Transforms: Dịch chuyển các element 3D
- 2D Transforms: Dịch chuyển các element 2D

Thuộc tính | Các giá trị của thuộc tính | Giải thích | Code mẫu | Hình Ảnh |
---|---|---|---|---|
matrix3d | matrix3d(n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n) | Định nghĩa một biến đổi 3D, sử dụng ma trận 4x4 với 16 giá trị. |
|
|
translate3d | translate3d(x, y, z) | Định nghĩa một phép dịch chuyển 3D. |
|
|
translateX | translateX(x) | Định nghĩa một phép dịch chuyển 3D, sử dụng chỉ giá trị cho trục X. |
|
|
translateY | translateY(y) | Định nghĩa một phép dịch chuyển 3D, sử dụng chỉ giá trị cho trục Y. |
|
|
translateZ | translateZ(z) | Định nghĩa một phép dịch chuyển 3D, sử dụng chỉ giá trị cho trục Z. |
|
|
scale3d | scale3d(x, y, z) | Định nghĩa một phép biến đổi tỷ lệ 3D. |
|
|
scaleX | scaleX(x) | Định nghĩa một phép biến đổi tỷ lệ 3D theo trục X. |
|
|
scaleY | scaleY(y) | Định nghĩa một phép biến đổi tỷ lệ 3D theo trục Y. |
|
|
scaleZ | scaleZ(z) | Định nghĩa một phép biến đổi tỷ lệ 3D theo trục Z. |
|
|
rotate3d | rotate3d(x, y, z, angle) | Định nghĩa một phép xoay 3D. |
|
|
rotateX | rotateX(angle) | Định nghĩa một phép xoay 3D dọc theo trục X. |
|
|
rotateY | rotateY(angle) | Định nghĩa một phép xoay 3D dọc theo trục Y. |
|
|
rotateZ | rotateZ(angle) | Định nghĩa một phép xoay 3D dọc theo trục Z. |
|
|
perspective | perspective(n) | Định nghĩa khoảng cách giữa người xem và mặt phẳng z=0 của phần tử. |
|
|
51. (CSS Nâng Cao) CSS Transitions - Chuyển thuộc tính CSS Này => 1 CSS khác cùng loại sẽ thực hiện trong 1 khoản thời gian và cách chuyển đổi
- CSS Transitions là một kỹ thuật trong CSS cho phép tạo ra các hiệu ứng chuyển đổi mượt mà giữa
các trạng thái CSS khác nhau của một phần tử. Điều này có thể được sử dụng để làm cho các thay đổi trong phong
cách (style) của một phần tử trở nên mượt mà và hấp dẫn hơn, thay vì xảy ra ngay lập tức.
ví dụ lúc đầu có box có background là màu đỏ khi :hover box background sẽ chuyển sang xanh => Thay vì chuyển đổi ngay thì transition sẽ thực hiện 1 hiệu ứng hay mất thời gian thì mới thực hiện chuyển background

Thuộc tính | Các giá trị của thuộc tính | Giải thích | Code mẫu | Thông tin |
---|---|---|---|---|
transition |
|
Thiết lập hiệu ứng chuyển đổi cho một hoặc nhiều thuộc tính. |
|
Thuộc tính ở đây là bất kỳ thuộc tính nào của css: như width , height, color, background....... |
transition-delay |
|
Xác định khoảng thời gian chờ trước khi bắt đầu hiệu ứng chuyển đổi. |
|
|
transition-duration |
|
Xác định thời gian kéo dài của hiệu ứng chuyển đổi. |
|
|
transition-property |
|
Xác định thuộc tính CSS nào sẽ có hiệu ứng chuyển đổi. |
|
|
transition-timing-function |
|
Xác định tốc độ của hiệu ứng chuyển đổi. |
|
![]() |
.box { width: 100px; height: 100px; background-color: #4CAF50; transition: background-color 2s ease-in-out, transform 1s; (transition sẽ thực hiện 2 thuộc tính là background-color và transform) } .box:hover { background-color: #ff6347; transform: rotate(45deg); }
-
.box:
- width: Chiều rộng của phần tử là 100px.
- height: Chiều cao của phần tử là 100px.
- background-color: Màu nền ban đầu của phần tử là màu xanh lá cây (#4CAF50).
- transition: Định nghĩa các thuộc tính CSS sẽ có hiệu ứng chuyển đổi khi thay đổi
- background-color 2s ease-in-out: Chuyển đổi màu nền trong 2 giây với hiệu ứng "ease-in-out".
- transform 1s: Chuyển đổi thuộc tính transform trong 1 giây.
-
.box:hover (Khi người dùng di chuột vào phần tử .box, các thuộc tính sau sẽ thay đổi)
- background-color: Màu nền thay đổi thành màu cam (#ff6347).
- transform: Phần tử sẽ xoay 45 độ.
52. (CSS Nâng Cao) CSS Animations - cho phép các nhà phát triển web tạo ra các hiệu ứng chuyển động mượt mà
- CSS Animation lmột công nghệ trong CSS (Cascading Style Sheets) cho phép các nhà phát triển
web tạo ra các hiệu ứng chuyển động mượt mà và phức tạp trên các trang web mà không cần sử dụng JavaScript.
CSS Animation cung cấp một phương pháp dễ dàng và hiệu quả để thay đổi các thuộc tính của các phần tử HTML
theo thời gian, giúp cải thiện trải nghiệm người dùng.
B1: Ví dụ ta tạo 1 Animation theo kiểu from + t0 hoặc 25% + 50% + 75% + 100% (trong từng khoản sẽ thực hiện việc gì đó) = @keyframes B2: Sau đó thực thi Animation bằng các thuộc tính: - animation-name: Đặt tên cho hoạt ảnh, liên kết với các @keyframes đã định nghĩa. - animation-duration: Định nghĩa thời gian hoàn thành một chu kỳ của hoạt ảnh. - animation-timing-function: Định nghĩa tốc độ của hoạt ảnh (vd: ease, linear, ease-in, ease-out, cubic-bezier). - animation-delay: Định nghĩa thời gian chờ trước khi bắt đầu hoạt ảnh. - animation-iteration-count: Định nghĩa số lần lặp lại của hoạt ảnh (vd: infinite để lặp vô hạn). - animation-direction: Định nghĩa hướng của hoạt ảnh (vd: normal, reverse, alternate, alternate-reverse). - animation-fill-mode: Định nghĩa trạng thái của phần tử khi hoạt ảnh không phát (vd: none, forwards, backwards, both). - animation-play-state: Định nghĩa trạng thái hoạt ảnh (vd: running, paused).

Thuộc tính | Các giá trị của thuộc tính | Giải thích | Code mẫu | Thông tin |
---|---|---|---|---|
@keyframes | N/A | Định nghĩa mã của hoạt ảnh. |
|
|
animation | animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, animation-play-state | Thuộc tính viết tắt cho việc thiết lập tất cả các thuộc tính hoạt ảnh. |
|
|
animation-delay | time (s | ms) | Chỉ định một khoảng thời gian trì hoãn cho hoạt ảnh bắt đầu. |
|
|
animation-direction | normal | reverse | alternate | alternate-reverse | Chỉ định liệu hoạt ảnh nên được phát tiến, lùi hoặc xen kẽ. |
|
|
animation-duration | time (s | ms) | Chỉ định thời gian hoạt ảnh hoàn thành một chu kỳ. |
|
|
animation-fill-mode | none | forwards | backwards | both | Chỉ định kiểu cho phần tử khi hoạt ảnh không phát. |
|
![]() |
animation-iteration-count | number | infinite | Chỉ định số lần hoạt ảnh nên được phát. |
|
|
animation-name | keyframes-name | Chỉ định tên của hoạt ảnh @keyframes. |
|
|
animation-play-state | running | paused | Chỉ định liệu hoạt ảnh đang chạy hoặc tạm dừng. |
|
![]() |
animation-timing-function | ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps(int, start | end) | cubic-bezier(n, n, n, n) | Chỉ định đường cong tốc độ của hoạt ảnh. |
|
![]() |
.animated-box { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; animation-timing-function: ease-in-out; animation-delay: 1s; animation-iteration-count: infinite; animation-direction: alternate; animation-fill-mode: forwards; } @keyframes example { 0% { background-color: red; } 50% { background-color: yellow; } 100% { background-color: green; } }
-
@keyframes example:
- Định nghĩa các trạng thái của hoạt ảnh từ màu đỏ (0%) đến màu vàng (50%) và cuối cùng đến màu xanh lá cây (100%).
-
.animated-box:
- animation-name: example;: Liên kết hoạt ảnh với các @keyframes được đặt tên "example".
- animation-duration: 4s;: Hoạt ảnh sẽ hoàn thành một chu kỳ trong 4 giây.
- animation-timing-function: ease-in-out;: Hoạt ảnh sẽ bắt đầu chậm, tăng tốc ở giữa và chậm lại khi kết thúc.
- animation-delay: 1s;: Hoạt ảnh sẽ bắt đầu sau 1 giây.
- animation-iteration-count: infinite;: Hoạt ảnh sẽ lặp lại vô hạn.
- animation-direction: alternate;: Hoạt ảnh sẽ phát tiến và lùi xen kẽ.
- animation-fill-mode: forwards;: Phần tử sẽ giữ nguyên trạng thái cuối cùng của hoạt ảnh khi kết thúc.
53. (CSS Nâng Cao) CSS Tooltip - Tạo 1 chữ hiển lên khi ta hover vô 1 object
- Tooltip là một phần tử nhỏ, thường xuất hiện khi người dùng di chuột hoặc nhấn vào một phần tử khác. Nó cung cấp thông tin bổ sung hoặc mô tả ngắn gọn về phần tử mà người dùng đang tương tác. Tooltip thường được sử dụng để cung cấp thông tin hữu ích mà không làm gián đoạn trải nghiệm người dùng.

HTML: <div class="tooltip"> Di chuột vào đây <span class="tooltiptext">Đây là nội dung của tooltip!</span> </div> <ul> <li>Thẻ div với lớp .tooltip chứa văn bản "Di chuột vào đây".</li> <li>Bên trong .tooltip, có một thẻ span với lớp .tooltiptext chứa nội dung tooltip ("Đây là nội dung của tooltip!").</li> </ul>
- Thẻ div với lớp .tooltip chứa văn bản "Di chuột vào đây".
- Bên trong .tooltip, có một thẻ span với lớp .tooltiptext chứa nội dung tooltip ("Đây là nội dung của tooltip!").
CSS: .tooltip { position: relative; display: inline-block; border-bottom: 1px dotted black; /* Tùy chọn - gạch dưới văn bản tooltip */ cursor: help; /* Tùy chọn - thay đổi con trỏ thành dấu hỏi */ } .tooltip .tooltiptext { visibility: hidden; width: 120px; background-color: #555; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; } .tooltip:hover .tooltiptext { visibility: visible; opacity: 1; }
- .tooltip được đặt position: relative để cho phép định vị tooltip.
- .tooltiptext ban đầu bị ẩn (visibility: hidden) và được định vị tuyệt đối so với phần tử cha .tooltip.
- Khi di chuột (:hover) vào .tooltip, .tooltiptext sẽ hiển thị (visibility: visible) và dần dần xuất hiện (opacity: 1).
54. (CSS Nâng Cao) CSS Styling Images - Tạo ảnh theo phông cách khác nhau
- Bo Tròn Ảnh: Bằng thuộc tính border-radius
- Hình ảnh nhỏ: thumbnail image
- Response Image: hình ảnh theo kích thước
- Card Image: Tạo ảnh card
- Image Hover Overlay:Lớp phủ ảnh
.context-image { width: 500px; height: 500px; position: relative; } .images { width: 100%; } .text-over { position: absolute; bottom: 0; left: 0; right: 0; background-color: #008CBA; overflow: hidden; width: 100%; height: 0; width: 100%; transition: height .5s ease-in-out; } .context-image:hover .text-over { height: 100%; cursor: pointer; } .text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
55. (CSS Nâng Cao) CSS Image Reflections - Phản chiếu ảnh bằng box-reflect
- CSS Image Reflections - Phản chiếu ảnh bằng box-reflect

img { -webkit-box-reflect: below; }
- below: Quay ngược ảnh
img { -webkit-box-reflect: right; }
- right: Quay ngược ảnh
img { -webkit-box-reflect: below 0px linear-gradient(to bottom, rgba(0,0,0,0.0), rgba(0,0,0,0.4)); }
- right: Quay ngược ảnh
56. (CSS Nâng Cao) CSS The object-fit Property - Cho ảnh và video vào vừa khung bằng object-fit
- CSS The object-fit Property - Cho ảnh và video vào vừa khung object-fit

.fill {object-fit: fill;} .contain {object-fit: contain;} .cover {object-fit: cover;} .scale-down {object-fit: scale-down;} .none {object-fit: none;}
- Object-fit: fill: Hình ảnh được kéo giãn để phù hợp với cả chiều rộng và chiều cao của khung chứa, có thể bị méo.
- Object-fit: contain: Hình ảnh được thay đổi kích thước để vừa với khung chứa mà không bị méo, nhưng có thể có khoảng trống xung quanh nếu tỷ lệ khung hình của hình ảnh không khớp với khung chứa.
- Object-fit: cover: Hình ảnh được thay đổi kích thước để bao phủ toàn bộ khung chứa, có thể cắt bỏ một phần của hình ảnh nếu tỷ lệ khung hình không khớp với khung chứa.
- Object-fit: none: Hình ảnh không được thay đổi kích thước và giữ nguyên kích thước gốc của nó.
- Object-fit: scale-down: Hình ảnh sẽ được thay đổi kích thước giống như none hoặc contain, tùy thuộc vào kích thước nào nhỏ hơn.
57. (CSS Nâng Cao) CSS The object-position Property - cho phép bạn đặt vị trí của nội dung hình ảnh bên trong khung chứa.
- CSS The object-position Property - cho phép bạn đặt vị trí của nội dung hình ảnh bên trong khung chứa. object-position

object-position: center; object-position: top left; object-position: bottom right;
- object-position: center; Đưa hình ảnh ra giữa
- object-position: top left; Hình ảnh dính ở bên trên và bên trái
- object-position: bottom right; Hình ảnh dính ở bên dưới và phải
58. (CSS Nâng Cao) Tạo hình ảnh mặt nạ bằng mask-image
- mask-image :sử dụng để xác định một hình ảnh mask (mặt nạ) cho một phần tử. Hình ảnh mặt nạ sẽ che phủ một phần của phần tử, tạo hiệu ứng hiển thị đặc biệt. Khi áp dụng, các phần tử bị mặt nạ che sẽ trở nên trong suốt, hiển thị nền phía sau nó

STT | Thuộc Tính | Giá Trị | Giải Thích Thuộc Tính | Code ví dụ |
---|---|---|---|---|
1 | mask-image | none | url() | linear-gradient() | radial-gradient() | repeating-linear-gradient() | repeating-radial-gradient() | Xác định một hình ảnh được sử dụng như một lớp mặt nạ cho phần tử. |
|
2 | mask-mode | alpha | luminance | Chỉ định liệu hình ảnh lớp mặt nạ được xử lý như một mặt nạ độ sáng hoặc như một mặt nạ alpha. |
|
3 | mask-origin | border-box | content-box | padding-box | Chỉ định vị trí gốc (khu vực vị trí mặt nạ) của hình ảnh lớp mặt nạ. |
|
4 | mask-position | left top | center center | right bottom | <length> | <percentage> | Đặt vị trí bắt đầu của hình ảnh lớp mặt nạ (tương đối với khu vực vị trí mặt nạ). |
|
5 | mask-repeat | repeat | no-repeat | repeat-x | repeat-y | space | round | Chỉ định cách hình ảnh lớp mặt nạ được lặp lại. |
|
6 | mask-size | auto | contain | cover | <length> | <percentage> | Chỉ định kích thước của hình ảnh lớp mặt nạ. |
|
p { color: red; text-align: center; }
59. (CSS Nâng Cao) CSS Style Button
- CSS Style Button : Làm đẹp cho button

-
Button Colors: Màu sắt button
CSS: .button { background-color: #04AA6D; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .button2 {background-color: #008CBA;} /* Blue */ .button3{background-color: #f44336;} /* Red */ .button4 {background-color: #e7e7e7; color: black;} /* Gray */ .button5 {background-color: #555555;} /* Black */
<button class="button">Green</button> <button class="button button2">Blue</button> <button class="button button3">Red</button> <button class="button button4">Gray</button> <button class="button button5">Black</button>
-
Áp dụng 1 Element có 2 class:
- button: Áp dụng Css của Button
- button2: Áp dụng css của button2
-
Button Size: Kích Thước Button
CSS: .button { background-color: #04AA6D; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; margin: 4px 2px; cursor: pointer; } .button1 {font-size: 10px;} .button2 {font-size: 12px;} .button3 {font-size: 16px;} .button4 {font-size: 20px;} .button5 {font-size: 24px;}
<button class="button button1">10px</button> <button class="button button2">12px</button> <button class="button button3">16px</button> <button class="button button4">20px</button> <button class="button button5">24px</button>
-
Áp dụng 1 Element có 2 class:
- button: Áp dụng Css của Button
- button2: Áp dụng css của button2
-
Bo Tròn Button
CSS: .button { background-color: #04AA6D; /* Green */ border: none; color: white; padding: 20px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .button1 {border-radius: 2px;} .button2 {border-radius: 4px;} .button3 {border-radius: 8px;} .button4 {border-radius: 12px;} .button5 {border-radius: 50%;}
<button class="button button1">2px</button> <button class="button button2">4px</button> <button class="button button3">8px</button> <button class="button button4">12px</button> <button class="button button5">50%</button>
-
Áp dụng 1 Element có 2 class:
- button: Áp dụng Css của Button
- button2: Áp dụng css của button2
-
Animation Button
CSS: .button-animation { position: relative; background-color: #04AA6D; border: none; font-size: 28px; color: #FFFFFF; padding: 20px; width: 200px; text-align: center; transition-duration: 0.4s; text-decoration: none; overflow: hidden; cursor: pointer; } .button-animation:after { content: ""; background: #f1f1f1; display: block; position: absolute; padding-top: 300%; padding-left: 350%; margin-left: -20px !important; margin-top: -120%; opacity: 0; transition: all 0.8s } .button-animation:active:after { padding: 0; margin: 0; opacity: 1; transition: 0s }
<button class="button-animation">Click Me</button>
-
Áp dụng 1 Element có 2 class:
- button: Áp dụng Css của Button
- button2: Áp dụng css của button2
-
Khoá và Mở Button
CSS: .button { background-color: #04AA6D; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .disabled { opacity: 0.6; cursor: not-allowed; }
<button class="button">Normal Button</button> <button class="button disabled">Disabled Button</button>
-
Áp dụng 1 Element có 2 class:
- button: Áp dụng Css của Button
- button2: Áp dụng css của button2
- Ngoài ra có thể tham khảo thêm link sau
60. (CSS Nâng Cao) CSS Pagination - Phân Trang
- CSS Pagination - Phân Trang

Demo:
<div class="pagination"> <a href="#">«</a> <a href="#">1</a> <a href="#">2</a> <a href="#">3</a> <a href="#">4</a> <a href="#">5</a> <a href="#">6</a> <a href="#">»</a> </div>
.pagination { display: inline-block; } .pagination a { color: black; float: left; padding: 8px 16px; text-decoration: none; } .pagination a.active { background-color: #4CAF50; color: white; } .pagination a:hover:not(.active) {background-color: #ddd;}
- .pagination: Class định nghĩa các thuộc tính a inline-block
- .pagination a: Class định nghĩa thẻ a
- .pagination a.active: Class nút nào active
- .pagination a:hover: Nút vào hover vô thì đổi màu
.pagination a { border-radius: 5px; } .pagination a.active { border-radius: 5px; } .pagination a { transition: background-color .3s; } .pagination a { border: 1px solid #ddd; /* Gray */ } .pagination a { margin: 0 4px; /* 0 is for top and bottom. Feel free to change it */ } .pagination a { font-size: 22px; } .center { text-align: center; }
- border-radius: 5px; Thêm viền bo tròn cho nút
- transition: background-color .3s; Thêm hiệu ứng khi chuyển background
- border: 1px solid #ddd; /* Gray */ Thêm border cho nút
- margin: 0 4px; cho khoản trắng ở giữa
- font-size: 22px; Thêm kích thước font-size
- text-align: center; Chữ căn giữa
Demo: Phân Trang Theo Kiểu Đường Dẫn

.content-paginglink { display: inline-block; padding: 8px 16px; background-color: #4CAF50; } .content-paginglink ul { list-style-type: none; } .content-paginglink ul li { float: left; color: #e7e7e7; } .content-paginglink ul li::before { padding: 8px; color: black; content: "/\00a0"; font-weight: bold; } .content-paginglink ul li a:hover { color: #f44336; } .content-paginglink ul li a { text-decoration: none; color: yellow; }
<div class="content-paginglink"> <ul> <li><a href="#" target="_blank">Home</a></li> <li><a href="#" target="_blank">Library</a></li> <li><a href="#" target="_blank">Data</a></li> <li>CSS</li> </ul> </div> <div class="clear-float"></div>
61. (CSS Nâng Cao) CSS Multiple Columns - Cho phép bạn chia nội dung của một phần tử HTML thành nhiều cột
- CSS Multiple Columns: Cho phép bạn chia nội dung của một phần tử HTML thành nhiều cột

STT | Thuộc Tính | Giá Trị | Giải Thích Thuộc Tính | Code ví dụ |
---|---|---|---|---|
1 | column-count |
|
Chỉ định số cột mà nội dung nên được chia thành. |
|
2 | column-gap |
|
Chỉ định khoảng cách giữa các cột. |
|
3 | column-rule | <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'> | Chỉ định quy tắc giữa các cột. |
|
4 | column-width |
|
Chỉ định độ rộng tối thiểu của mỗi cột. |
|
5 | columns | <'column-width'> || <'column-count'> | Thiết lập cả số cột và độ rộng cột trong một khai báo. |
|
6 | column-span | all | none | Chỉ định liệu một phần tử nên trải dài trên nhiều cột hay không. |
|
7 | column-fill | auto | balance | Chỉ định cách nội dung nên được cân bằng giữa các cột. |
|
62. (CSS Nâng Cao) CSS User Interface - 2 Thuộc tính size and outline-offset giúp Cho phép thay đổi kích thước của một phần tử. dung
- CSS User Interface - 2 Thuộc tính size and outline-offset giúp căn chỉ text trong nội

-
resize:
Giá trị: none | both | horizontal | vertical Giải Thích Thuộc Tính: Cho phép thay đổi kích thước của một phần tử.
div { resize: none | both | horizontal | vertical; - none: không xử lý - both: Kéo rộng đc cả ngang và dọc - horizontal: Kéo rộng đc chiều ngang - vertical: Kéo rộng đc theo chiều dọc overflow: auto; }
-
outline-offset:
Giá trị: px; Giải Thích Thuộc Tính: Xác định khoảng cách giữa đường viền ngoài và biên của phần tử.
div { outline: 2px solid red; outline-offset: 10px; }
STT | Thuộc Tính | Giá Trị | Giải Thích Thuộc Tính | Code ví dụ | Kết quả |
---|---|---|---|---|---|
1 | resize | none | both | horizontal | vertical | Cho phép thay đổi kích thước của một phần tử. |
|
Bạn có thể thay đổi kích thước phần tử này.
|
2 | outline-offset |
|
Xác định khoảng cách giữa đường viền ngoài và biên của phần tử. |
|
Đường viền ngoài cách biên của phần tử 10px.
|
63. (CSS Nâng Cao) CSS Variables - Tạo biến CSS và Sử dụng biến CSS --tenbien + var(--tenbien)
- CSS Variables - Tạo biến CSS và Sử dụng biến CSS --tenbien + var(--tenbien)

-
var(--tenbien):
:root { --blue: #1e90ff; --white: #ffffff; } .container { color: var(--blue); background-color: var(--white); padding: 15px; }
- :root => Biến được khai báo toàn cục
- --blue: #1e90ff; Khai báo biến CSS
- color: var(--blue); Sử dụng biến CSS
-
CSS Overriding Variable: Ghi Đề Biến
:root { --main-bg-color: lightblue; => Biến khai báo lần 1 --main-text-color: darkblue; } body { background-color: var(--main-bg-color); => Sửu dụng lần 1 color: var(--main-text-color); } .override { --main-bg-color: lightcoral; => Biến khai báo lần 2 (Ghi đề lần 1) --main-text-color: white; } .override-example { background-color: var(--main-bg-color); => Sửu dụng lần 2 color: var(--main-text-color); => Sửu dụng lần 2 padding: 20px; margin: 20px; border: 1px solid #000; } --------------HTML------------------- <h1>Ví dụ về CSS Overriding Variables</h1> <p>Đoạn văn này sử dụng màu nền và màu chữ từ biến CSS khai báo ở <code>:root</code>.</p> <div class="override"> <p class="override-example">Đoạn văn này sử dụng màu nền và màu chữ từ biến CSS đã bị ghi đè trong phần tử <code>.override</code>.</p> </div>
-
Thay Đổi Và Get Biến với javascript
<script> => Lấy Element :root var r = document.querySelector(':root'); => Tạo 1 hàm lấy giá trị root function myFunction_get() { => Lấy giá trị (thuộc tính và giá trị) của root var rs = getComputedStyle(r); => Hiển thị giá trị của biến alert("giá trị của --blue là: " + rs.getPropertyValue('--blue')); } => Tạo 1 hàm set giá trị roote function myFunction_set() { => Set giá trị (Đổi thành => "lightblue") r.style.setProperty('--blue', 'lightblue'); } </script> --------------HTML------------------- <button type="button" onclick="myFunction_get() ">Lấy Giá trị Biến CSS với JS</button> <button type="button" onclick="myFunction_set()">Thay Đổi Biến CSS Với JavaScript</button>
Demo:
Nội Dung Của Thẻ -
CSS Using Variables in Media Queries - Thay Đổi Giá Trị Trong @media
=> Khi kích thước nhỏ hơn 600px thì biến sẽ được áp dụng @media screen and (min-width: 600px) { .container { --fontsize: 50px; } :root { --blue: lightblue; } }
Demo:
Thu Nhỏ Kích Thước <= 600px thì backgroud-color sẽ đổi nhờ vào @media
64. (CSS Nâng Cao) box-sizing thay đổi cách tính toán kích thước của các phần tử (element) trong trang web
- box-sizing:thay đổi cách tính toán kích thước của các phần tử (element) trong trang web

- box-sizing:content-box (mặc định):
+ Khi sử dụng giá trị này, chiều rộng và chiều cao của phần tử chỉ bao gồm nội dung (content) của phần tử đó. + Padding và border không được tính vào kích thước tổng thể của phần tử.
- box-sizing:border-box:
+ Khi sử dụng giá trị này, chiều rộng và chiều cao của phần tử bao gồm nội dung, padding và border. + Padding và border được tính vào kích thước tổng thể của phần tử, giúp dễ dàng kiểm soát kích thước của phần tử.
.content-box { box-sizing: content-box; width: 200px; padding: 20px; border: 10px solid black; } .border-box { box-sizing: border-box; width: 200px; padding: 20px; border: 10px solid black; }
65. (CSS Nâng Cao) @media responsive web design
- (CSS Nâng Cao) @media responsive web design: Thiết kế web thích hợp với nhiều kích thước khác nhau

@media media-type and (condition) { /* CSS rules */ }
- Nghĩa là khi màn hình đạt đến điều kiện condition thì CSS bên trong sẽ được thực thi
=> /* Áp dụng kiểu khi chiều rộng viewport lớn hơn 600px và chiều cao lớn hơn 400px */ @media screen and (min-width: 600px) and (min-height: 400px) { body { background-color: lightcoral; } } =>/* Áp dụng kiểu khi chiều rộng viewport lớn hơn 600px hoặc chiều cao lớn hơn 400px */ @media screen and (min-width: 600px), screen and (min-height: 400px) { body { background-color: lightyellow; } } =>/* Áp dụng kiểu khi thiết bị không phải là màn hình */ @media not screen { body { font-size: 16px; } }
- Nghĩa là khi màn hình đạt đến điều kiện condition thì CSS bên trong sẽ được thực thi
=> /* Với mỗi kích thước khác nhau thì sẽ add file CSS tương ứng href */
<link rel="stylesheet" media="print" href="print.css">
<link rel="stylesheet" media="screen" href="screen.css">
<link rel="stylesheet" media="screen and (min-width: 480px)" href="example1.css">
<link rel="stylesheet" media="screen and (min-width: 701px) and (max-width: 900px)" href="example2.css">
STT | Thuộc Tính | Giá Trị | Giải Thích Thuộc Tính | Code ví dụ |
---|---|---|---|---|
1 | orientation | landscape, portrait | Xác định hướng của màn hình. Chế độ ngang (landscape) hoặc dọc (portrait). |
|
2 | max-height | px, em, rem, % | Chiều cao tối đa của màn hình hiển thị. |
|
3 | min-height | px, em, rem, % | Chiều cao tối thiểu của màn hình hiển thị. |
|
4 | height | px, em, rem, % | Chiều cao của màn hình hiển thị (bao gồm cả thanh cuộn). |
|
5 | max-width | px, em, rem, % | Chiều rộng tối đa của màn hình hiển thị. |
|
6 | min-width | px, em, rem, % | Chiều rộng tối thiểu của màn hình hiển thị. |
|
7 | width | px, em, rem, % | Chiều rộng của màn hình hiển thị (bao gồm cả thanh cuộn). |
|
66. (CSS Nâng Cao) CSS Flex
- CSS Flex : để giúp phân bố không gian giữa các mục trong một container và cải thiện khả năng căn chỉnh, đặc biệt khi kích thước của container là động hoặc không xác định

- Flex Property Parent Element(Thuộc tính CSS Lớp Cha chứa item flex):
STT Thuộc Tính Giá Trị Giải Thích Thuộc Tính Code ví dụ Minh Hoạ 1 flex-direction row, row-reverse, column, column-reverse Xác định hướng chính của các item trong container. .flex-container { flex-direction: row; }
2 flex-wrap nowrap, wrap, wrap-reverse Quy định các item có được bọc xuống dòng mới khi container bị hẹp. .flex-container { flex-wrap: wrap; }
3 flex-flow <flex-direction> <flex-wrap> Thuộc tính viết tắt cho flex-direction và flex-wrap. .flex-container { flex-flow: row wrap; }
4 justify-content flex-start, flex-end, center, space-between, space-around, space-evenly Căn chỉnh các item theo trục chính. .flex-container { justify-content: center; }
5 align-items flex-start, flex-end, center, baseline, stretch Căn chỉnh các item theo trục phụ (ngang với trục chính). .flex-container { align-items: center; }
6 align-content flex-start, flex-end, center, space-between, space-around, stretch Căn chỉnh các dòng của item trong container khi có khoảng trống dư. .flex-container { align-content: center; }
Demo: Căn Chỉ Giữa Các Thẻ Bên Trong Thẻ Cha
.flex-container { display: flex; height: 300px; justify-content: center; align-items: center; }
-
Flex Property Parent Element(Thuộc tính CSS Lớp Cha chứa item flex):
STT Thuộc Tính Giá Trị Giải Thích Thuộc Tính Code ví dụ Hình Minh Hoạ 1 order số nguyên Xác định thứ tự của các item trong container. .flex-item { order: 2; }
2 flex-grow số dương Xác định khả năng mở rộng của item so với các item khác trong container. .flex-item { flex-grow: 2; }
3 flex-shrink số dương Xác định khả năng co lại của item so với các item khác trong container. .flex-item { flex-shrink: 1; }
4 flex-basis giá trị chiều dài Xác định kích thước ban đầu của item trước khi phân bổ không gian. .flex-item { flex-basis: 50%; }
5 flex flex-grow flex-shrink flex-basis Thuộc tính viết tắt cho flex-grow, flex-shrink và flex-basis. .flex-item { flex: 1 0 30%; }
6 align-self auto, flex-start, flex-end, center, baseline, stretch Căn chỉnh item riêng lẻ theo trục phụ trong container. .flex-item { align-self: flex-end; }
- Flex Responsive Tham Khảo Link sau
67. (CSS Nâng Cao) Responsive
- Responsive: Hiển thị web với nhiều giao diện khác nhau

-
Đầu tiên:Khai báo <meta name="viewport" content="width=device-width,
initial-scale=1.0"> nếu không khai báo như này
thì sẽ không thực hiện responsive được.
<meta name="viewport" content="width=device-width,initial-scale=1.0">
-
Responsive bằngResponsive Grid-View Tạo thành những column hoặc row để chia layout
thì sẽ không thực hiện responsive được.
- Bước 1: Chuyển các thẻ về box-sizing:border-box
- Bước 2:
- Bước 3: Tạo các class CSS với width tương ứng
.col-1 {width: 8.33%;} .col-2 {width: 16.66%;} .col-3 {width: 25%;} .col-4 {width: 33.33%;} .col-5 {width: 41.66%;} .col-6 {width: 50%;} .col-7 {width: 58.33%;} .col-8 {width: 66.66%;} .col-9 {width: 75%;} .col-10 {width: 83.33%;} .col-11 {width: 91.66%;} .col-12 {width: 100%;}
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> * { box-sizing: border-box; } .row::after { content: ""; clear: both; display: table; } [class*="col-"] { float: left; padding: 15px; } .col-1 {width: 8.33%;} .col-2 {width: 16.66%;} .col-3 {width: 25%;} .col-4 {width: 33.33%;} .col-5 {width: 41.66%;} .col-6 {width: 50%;} .col-7 {width: 58.33%;} .col-8 {width: 66.66%;} .col-9 {width: 75%;} .col-10 {width: 83.33%;} .col-11 {width: 91.66%;} .col-12 {width: 100%;} html { font-family: "Lucida Sans", sans-serif; } .header { background-color: #9933cc; color: #ffffff; padding: 15px; } .menu ul { list-style-type: none; margin: 0; padding: 0; } .menu li { padding: 8px; margin-bottom: 7px; background-color: #33b5e5; color: #ffffff; box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } .menu li:hover { background-color: #0099cc; } </style> </head> <body> <div class="header"> <h1>Chania</h1> </div> <div class="row"> <div class="col-3 menu"> <ul> <li>The Flight</li> <li>The City</li> <li>The Island</li> <li>The Food</li> </ul> </div> <div class="col-9"> <h1>The City</h1> <p>Chania is the capital of the Chania region on the island of Crete. The city can be divided in two parts, the old town and the modern city.</p> <p>Resize the browser window to see how the content respond to the resizing.</p> </div> </div> </body> </html>
-
Responsive sử dụng @media
=> /* Các thiết bị cực nhỏ (điện thoại, 600px trở xuống) */ @media only screen and (max-width: 600px) {...} => /* Các thiết bị cực nhỏ (điện thoại, 600px trở xuống) */ @media only screen and (min-width: 600px) {...} => /* Thiết bị trung bình (máy tính bảng nằm ngang, 768px trở lên) */ @media only screen and (min-width: 768px) {...} => /* Thiết bị lớn (máy tính xách tay/máy tính để bàn, 992px trở lên) */ @media only screen and (min-width: 992px) {...} => /* Thiết bị cực lớn (máy tính xách tay và máy tính để bàn lớn, 1200px trở lên) */ @media only screen and (min-width: 1200px) {...} => /* Nếu kích thước màn hình từ 601px trở lên, hãy đặt cỡ chữ thành 80px */ @media only screen and (min-width: 601px) { div.example { font-size: 80px; } } => /* Nếu màn hình kích thước là 600px trở xuống, hãy đặt kích thước chữ thành 30px */ @media only screen and (max-width: 600px) { div.example { font-size: 30px; } }
-
Responsive image + Videos
- Dùng: width
=> /*Nếu thuộc tính chiều rộng được đặt thành phần trăm và thuộc tính chiều cao được đặt thành "auto", hình ảnh sẽ phản hồi và tăng giảm tỷ lệ:*/ img { width: 100%; height: auto; } video { width: 100%; height: auto; }
- Dùng: max-width
=> /* Nếu thuộc tính max-width được đặt thành 100%, hình ảnh sẽ giảm tỷ lệ nếu cần, nhưng không bao giờ tăng tỷ lệ lên lớn hơn kích thước ban đầu của nó: */ img { max-width: 100%; -- Ảnh luôn có width lớn nhất là 100% (nghĩa là kích thước gốc của nó) nếu không thuộc tính này thì ảnh sẽ bị thay đổi kích thước. height: auto; } video { max-width: 100%; height: auto; }
-
Responsive dùng Frameworks như Bootstrap hoặc W3.CSS
-
W3.CSS
<!DOCTYPE html> <html> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <body> <div class="w3-container w3-blue" > <h1>W3Schools Demo</h1> <p>Resize this responsive page!</p> </div> <div class="w3-row-padding"> <div class="w3-third" > <h2>London</h2> <p>London is the capital city of England.</p> <p>It is the most populous city in the United Kingdom, with a metropolitan area of over 13 million inhabitants.</p> </div> <div class="w3-third" > <h2>Paris</h2> <p>Paris is the capital of France.</p> <p>The Paris area is one of the largest population centers in Europe, with more than 12 million inhabitants.</p> </div> <div class="w3-third" > <h2>Tokyo</h2> <p>Tokyo is the capital of Japan.</p> <p>It is the center of the Greater Tokyo Area, and the most populous metropolitan area in the world.</p> </div> </div> </body> </html>
- Bootstrap
<!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap 5 Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> </head> <body> <div class="container-fluid p-5 bg-primary text-white text-center"> <h1>My First Bootstrap Page</h1> <p>Resize this responsive page to see the effect!</p> </div> <div class="container mt-5"> <div class="row"> <div class="col-sm-4"> <h3>Column 1</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> <div class="col-sm-4"> <h3>Column 2</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> <div class="col-sm-4"> <h3>Column 3</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> </div> </div> </body> </html>
-
W3.CSS
-
Các Mẫu Responsive
Xem Mẫu Responsive
- Dùng: width
68. (CSS Nâng Cao) CSS Gird tạo ra các bố cục web phức tạp = Giống như thiết kế table
- CSS Grid là một hệ thống bố cục hai chiều mạnh mẽ giúp bạn tạo ra các bố cục web phức tạp và đáp ứng một
cách dễ dàng.
CSS Grid cho phép bạn sắp xếp các phần tử trong hàng và cột,
giúp kiểm soát không gian giữa các phần tử và thiết lập các vùng bố cục khác nhau trên trang web của bạn.
-
Các khái niệm cơ bản của CSS Grid
- Grid Container:Là phần tử cha bao quanh các phần tử con mà bạn muốn đặt trong lưới. Bạn chỉ định một phần tử là một grid container bằng cách sử dụng display: grid hoặc display: inline-grid.
- Grid Item:Là các phần tử con trực tiếp của grid container.

Gird Container (Thẻ Cha):
- display: grid; Thiết lập phần tử là một grid container.
- grid-template-columns: Định nghĩa số lượng cột và kích thước của chúng. Ở đây, chúng ta có 3 cột với kích thước đều nhau (1fr = 1 phần của không gian có sẵn).
- grid-template-rows: Định nghĩa số lượng hàng và kích thước của chúng. Ở đây, chúng ta có 2 hàng: hàng đầu tiên cao 100px, hàng thứ hai cao 200px.
- gap: Định nghĩa khoảng cách giữa các hàng và cột.
.grid-container { display: grid; grid-template-columns: auto auto auto; => Tạo ra 1 gird gồm 3 cột (column) có width là auto grid-template-rows: auto auto => Tạo ra 1 gird gồm 2 hàng (row) có width là auto gap: 10px; => khoảng trắng giữa các item background-color: #2196F3; padding: 10px; }
Gird Item (Thẻ Con):
STT | Thuộc Tính | Giá Trị | Giải Thích Thuộc Tính | Code ví dụ |
---|---|---|---|---|
1 | grid-column-start | 1 / 2 / 3 / ... | Xác định bắt đầu cột của phần tử lưới. |
|
2 | grid-column-end | 1 / 2 / 3 / ... | Xác định kết thúc cột của phần tử lưới. |
|
3 | grid-row-start | 1 / 2 / 3 / ... | Xác định bắt đầu hàng của phần tử lưới. |
|
4 | grid-row-end | 1 / 2 / 3 / ... | Xác định kết thúc hàng của phần tử lưới. |
|
5 | grid-column | start / end | Thiết lập giá trị cho cả grid-column-start và grid-column-end . |
|
6 | grid-row | start / end | Thiết lập giá trị cho cả grid-row-start và grid-row-end . |
|
7 | grid-area | row-start / column-start / row-end / column-end | Thiết lập vị trí của phần tử lưới theo khu vực. |
|
.bg-blue { background-color: rgb(218, 234, 251) !important; } .gird-contenerweb { display: grid; grid-template-columns: auto auto auto auto; grid-template-rows: 100px 100px 100px; background-color: #008CBA; gap: 10px 5px; border: solid 1px black; } .gird-contenerweb>div { border: solid 2px darkred; text-align: center; justify-content: center; margin: 5px; padding: 50px; } .item1 { grid-column: 1/5; } .item2 { grid-row: 2/5; } .item3 { grid-column-start: 2; grid-column-end: 4; } .item5 { grid-column-start: 2; grid-column-end: 5; } --------------HTML------------------- <div class="gird-contenerweb bg-blue mt"> <div class="item1">Header: grid-column: 1/5;</div> <div class="item2">Menu: grid-row: 2/5;</div> <div class="item3">Main: grid-column-start: 2; grid-column-end: 4;</div> <div class="item4">Right</div> <div class="item5">Footer: grid-column-start: 2; grid-column-end: 5;</div> </div>