Nội dung

CSS Cheat Sheet

CSS vừa dễ mà vừa khó. Dễ ở chỗ học thì dễ vì làm việc với CSS thì chỉ xoay quanh màu sắc, kích thước và cái hộp (box) thôi cơ mà khó ở chỗ áp dụng (chủ thớt chém như đúng rồi ).

Bài chém này tổng hợp kiến thức về CSS dưới dạng Cheat Sheet để cho mọi người tham khảo khi cần thiết. Đồng thời bonus thêm một cái vô cùng đau đầu trong CSS là Canh giữa đủ thứ

Bookmark nào
 Bạn có thể Bookmark lại trang này để có gì sau này tham khảo nha

Vài lưu ý thuật ngữ

  • CSS là từ viết tắt của Cascading Style Sheet được hiểu là ngôn ngữ tạo phong cách và định dạng kiểu cho đối tượng được viết dưới dạng ngôn ngữ đánh dấu như là HTML.
  • CSS được phát triển bởi W3C (World Wide Web Consortium - Hiệp hội web trên toàn thế giới) từ năm 1996 với lý do rất đơn giản là tạo phong cách, trang trí cho trang web vì HTML chỉ là ngôn ngữ đánh dấu văn bản thôi.
  • Mối quan hệ giữa HTML rất mật thiết bạn có thể tưởng tượng nếu HTML là bộ khung của chiếc xe còn CSS chính là nội thất, màu sắc giúp tạo nên phong cách, đẳng cấp của chiếc xe.
  • CSS hoạt động rất đơn giản theo nhiều cách khác nhau để tạo ra sự phức tạp với sự khủng bố  của cụm từ !important. Chém gió vậy để hù bạn tí thôi. Chứ CSS hoạt động bằng cách chọn các thành phần trên HTML dựa vào các thẻ tag và thuộc tính attributes. Rồi sau đó khi chọn được rồi thì sẽ dùng cú pháp của CSS để trang trí, tạo phong cách cho cái thành phần trên HTML được chọn. Vậy thôi
    • CSS có thể được chèn trực tiếp vào thẻ tag trong tập tin HTML
      • ví dụ <p style="color:blue"> HTML</p>
      • hoặc được viết trong cặp thẻ style, ví dụ <style>p {color:blue}</style>
    • CSS có thể được viết riêng ra thành tập tin có phần mở rộng .css và sau đó được liên kết vào phần head của trang HTML. Ví dụ ta có file style.css dùng trang trí cho file index.html cùng folder, cùng cấp thì trong phần head của file index.html ta sẽ liên kết với file style.css như sau <link ref="stylesheet" href="style.css" >

CSS Cheat Sheet

Selector

Tên & Code Ghi chú & Link tham khảo
Universal Selector * {} Bộ chọn tất cả
ID Selector #id {} Bộ chọn theo id
Class Selector .class {} Bộ chọn theo class
Type Selector h1, h2 ,h3 {} Bộ chọn theo loại
Adjacent Sibling Selector h1 + p {} Bộ chọn anh chị em liền kề
Child Selector ul > li {} Bộ chọn con trực tiếp
General Sibling Selector h1 ~ p {} Bộ chọn anh chị em chung
Descendant Selector p a {} Bộ chọn các con cháu
Attribute Selector div[attribute="SomeValue"] {} Chon theo thuộc tính

Pseudo

Tên & Code Ghi chú & Link tham khảo
Mouse Over Selector a:hover {} Bộ chọn khi rê chuột vào
Active Link Selector a:active {} Bộ chọn khi liên kết đang hoạt động
Focus Selector input:focus {} Bộ chọn khi chuẩn bị nhận đầu vào
Visited Links Selector a:visited {} Bộ chọn khi liên kết đã truy cập rồi
Link Selector .class:link {} Bộ chọn liên kết
Checked elements selector input:checked {} Bộ chọn phần tử được kiểm tra
Disabled elements selector input:disabled {} Bộ chọn phần tử bị vô hiệu hóa
Enabled elements selector input:enabled {} Bộ chọn phần tử đã bật
Not a Specified Element Selector :not(p) {} Bộ chọn không phải phần tử được chọn
First Line Selector p::first-line {} Bộ chọn đoạn văn dòng đầu tiên
First Letter Selector p::first-letter {} Bộ chọn đoạn văn chữ cái đầu tiên
First Child Selector p:first-child {} Bộ chọn đoạn văn con đầu tiên
Last Child Selector p:last-child {} Bộ chọn đoạn văn con cuối cùng
Only Child Selector p:only-child {} Bộ chọn đoạn văn chỉ chọn con
:nth-child Selector p:nth-child() {} Bộ chọn đoạn văn con thứ “n”
First Element of its Parent Selector p:first-of-type {} Bộ chọn đoạn văn phần tử đầu tiên
Elements that have no Children Selector p:empty {} Bộ chọn đoạn văn phần tử không có con
Before Element .class::before {} Bộ chọn trước phần tử
After Element .class::after {} Bộ chọn sau phần tử

Text Styling

Tên & Code Ghi chú & Link tham khảo
Font style font-style: normal or italic or oblique Kiểu font
Font Variant font-variant: normal or small-caps Biến thể font
Font Weight font-weight: normal or bold or bolder or lighter or 100 - 900 Độ đậm của font
Vertical Alignment vertical-align: baseline or 10px or sub or super or top or text-top or middle or bottom or text-bottom or initial Căn chỉnh dọc
Text Transform text-transform: capitalise or lowercase or uppercase Chuyển đổi chữ hoa, thường
Font Size font-size: 12px or 0.8em or 80% Cỡ chữ
Space Between Characters letter-spacing: normal or 4px Khoảng cách giữa các ký tự
Line Height line-height: normal or 3em or 34% Chiều cao giữa các dòng
Horizontal Alignment text-align: left or right or center or justify Căn chỉnh theo chiều ngang
Text Align Last text-align-last: auto or left or right or center or justify or start or end or initial or inherit Căn chỉnh đoạn văn cuối cùng
Text Decoration text-decoration: none or underline or overline or line-through Trang trí đoạn văn
Indent First Line text-indent: 25px Thụt đầu dòng đầu tiên
Font Family font-family: 'Open Sans', sans-serif Họ font chữ
Text Justify text-justify: auto or inter-word or inter-character or none or initial or inherit Căn đều văn bản
Text Overflow text-overflow: clip or ellipsis or string or initial or inherit Văn bản tràn chữ ra ngoài
Text Shadow text-shadow: h-shadow v-shadow blur-radius color or none or initial or inherit Đổ bóng cho văn bản

Position

Tên & Code Ghi chú & Link tham khảo
Position position: static or relative or absolute or fixed or sticky Vị trí
Position Properties top or right or bottom or left Thuộc tính của vị trí
Float Element float: left or right or none Phần tử nổi trôi
Clear Floating Elements clear: none or left or right or both Xóa các phần tử nổi
Z Index z-index: 3 or auto or inherit Chỉ số xác định lớp hiển thị

Background

Tên & Code Ghi chú & Link tham khảo
Background Image background-image: url() Hình nền
Background Repeat background-repeat: repeat-x or repeat-y or repeat or space or round or no-repeat Lặp lai hình nền
Background Attachment background-attachment: scroll or fixed or local or initial or inherit Hình nền cuộn kèm
Background Color background-color: #2AA9E0 Màu nền
Background Position background-position: top or right or bottom or left or center Vị trí trên nền

Box Properties

Tên & Code Ghi chú & Link tham khảo
Box Sizing box-sizing: border-box or content-box Kích thước box
Margin margin: 2px 4px 6px 8px or 0 auto Khoảng trống từ viền của phần tử ra phía ngoài
Padding padding: 2px 4px 6px 8px Khoảng cách từ nội dung phần tử cho tới viền
Border Color border-color: #2AA9E0 Màu viền
Border Style border-style: none or hidden or dotted or dashed or solid or double or groove or ridge or inset or outset Kiểu viền
Border Width border-width: 10px Chiều rộng viền

List Styling

Tên & Code Ghi chú & Link tham khảo
List Type list-style-type: disc or circle or square or none Kiểu danh sách
List Position list-style-position: inside or outside Vị trí kí tự trong danh sách
List Image list-style-image: url() Danh sách ký tự là hình ảnh

Flexbox

Tên & Code Ghi chú & Link tham khảo
Flex Direction flex-direction: row or row-reverse or column or column-reverse Hướng của flex
Flex Wrap flex-wrap: nowrap or wrap or wrap-reverse Flex wrap
Justify Content justify-content: flex-start or flex-end or center or space-between or space-around or space-evenly Flex căn nội dung theo trục chính (main axis)
Align Items align-items: flex-start or flex-end or center or baseline or stretch Flex căn phần tử theo trục chéo (cross axis)
Align Content align-content: flex-start or flex-end or center or space-between or space-around or stretch Xác định khoảng trống giữa và xung quanh nội dung theo trục chính
Order order: 0 Vị trí đặt phần tử trong flex
Flex Grow flex-grow: 0 Điều chỉnh độ rộng phần tử
Flex Shrink flex-shrink: 1 Điều chỉnh phần tử co lại
Flex Basis flex-basis: 3px or auto Xác định kích thước ban đầu flex
Align Self align-self: auto or flex-start or flex-end or center or baseline or stretch Tự căn chỉnh

CSS Grid

Tên & Code Ghi chú & Link tham khảo
Grid Template Columns grid-template-columns: 40px 50px auto 50px 40px Xác định cột của Grid
Grid Template Rows grid-template-rows: 25% 100px auto Xác định dòng của Grid
Grid Template Areas grid-template-areas: "a b c" or none Xác định khu vực của Grid
Grid Template grid-template: "a a a"20% "b b b" auto or 100px 1fr / 50px 1fr Xác định Grid
Grid Column Gap grid-column-gap: 10px Khoảng cách cột trong Grid
Grid Row Gap grid-row-gap: 10px Khoảng cách dòng trong Grid
Justify Items justify-items: start or end or center or stretch Nội dung căn chỉnh
Align Items align-items: start or end or center or stretch Flex căn phần tử theo trục chéo (cross axis)
Justify Content justify-content: flex-start or flex-end or center or space-between or space-around or space-evenly Flex căn nội dung theo trục chính (main axis)
Align Content align-content: flex-start or flex-end or center or space-between or space-around or stretch Xác định khoảng trống giữa và xung quanh nội dung theo trục chính
Grid Auto Columns grid-auto-columns: 100px or max-content or min-content Grid tự động điều theo cột
Grid Auto Rows grid-auto-rows: 100px or max-content or min-content Grid tự động điều chỉnh theo hàng
Grid Auto Flow grid-auto-flow: row or column or row dense or column dense Grid tự động điều chỉnh cả cột và hàng
Grid Column Start grid-column-start: 2 or areaname or span 2 or span areaname or auto Grid định dạng cho cột đầu tiên
Grid Column End grid-column-end: 2 or areaname or span 2 or span areaname or auto Grid định dạng cho cột cuối cùng
Grid Row Start grid-row-start: 2 or areaname or span 2 or span areaname or auto Grid định dạng cho dòng đầu tiên
Grid Row End grid-row-end: 2 or areaname or span 2 or span areaname or auto Grid định dạng cho dòng cuối cùng
Grid Column grid-column: 3 / span 2 Xác định cột cho Grid
Grid Row grid-row: 3 / span 2 Xác định dòng cho Grid
Justify Self justify-self: start or end or center or stretch Tự căn chỉnh justify
Align Self align-self: start or end or center or stretch Tự căn chỉnh align

Dynamic content

Tên & Code Ghi chú & Link tham khảo
CSS Variable --variable-name: value Biến trong CSS
Variable Usage var(--variable-name) Sử dụng biến
Counter Reset counter-reset: name-of-counter Thiết lập đánh số thứ tự
Counter Increment counter-increment: name-of-counter Thiết lập đánh số thứ tự tăng
Counter Dynamic Value content: counter(name-of-counter) Đánh số thứ tự cho giá trị thay đổi
Attribute Dynamic Value content: attr(name-of-attribute) Gắn thuộc tính thứ tự cho giá trị thay đổi

Box align properties

Phần này giải thích thêm cho 6 thuộc tính căn chỉnh box đó và tương quan với các box khác trong một box lớn hơn. Chủ yếu áp dụng với Flexbox và Grid có hai trục chính

  • Trục mà nó được áp dụng là main/inline hay cross/block. Trong đó flexbox chia ra trục main/cross còn Grid chia ra trục inline/block
  • Nó kiểm soát vị trí của box bên trong box cha hay nó kiểm soát vị trí nội dung bên trong của nó

Hình bên dưới giải thích rõ hơn về 6 thuộc tính căn chỉnh này. Tham khảo bài gốc tại đây

/css-cheat-sheet/content-self-item.png
Box align properties

CSS Canh giữa đủ thứ

Canh giữa theo chiều ngang

Canh giữa Text

Thường thì canh giữa text ta dùng như sau text-align: center Cùng xem ví dụ bên dưới nhu sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<div class="container-doidev">
    <p class="class-doidev">Đời Dev chém gió</p>
</div>

<style>
    .container-doidev {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
    }
    .class-doidev {
        text-align: center;
    }
</style>
Hiển thị Giao diện cho ví dụ trên

Đời Dev chém gió

Canh giữa khối Div với Margin auto

Ta có thể dùng thuộc tính margin: 0 auto; để canh giữa khối Div theo chiều ngang

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

<div class="container-doidev-1">
    <div class="class-doidev-1"></div>
</div>

<style>
    .container-doidev-1 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
    }
    .class-doidev-1 {
      width: 50px;
      height: 50px;
      background:orange;
      margin: 0 auto;
    }
</style>
Hiển thị cho ví dụ trên

Canh giữa khối Div với Flexbox

Đây là cách mới để canh giữa khối Div theo chiều ngang khi dùng flexbox với cú pháp

display: flex Kết hợp với justify-content:center

Ví dụ như sau

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<div class="container-doidev-2">
    <div class="class-doidev-2"></div>
</div>

<style>
    .container-doidev-2 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      display:flex;
      justify-content:center;
    }
    .class-doidev-2 {
      width: 50px;
      height: 50px;
      background:purple;
    }
</style>
Hiển thị cho ví dụ trên

Canh giữa theo chiều dọc

Không dùng flexbox

Không có flexbox thì ta có thể dùng hai cách như sau

Cách 1

Dùng CSS position absolute và negative margin Ví dụ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<div class="container-doidev-3">
    <div class="class-doidev-3"></div>
</div>

<style>
    .container-doidev-3 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      position: relative;
    }
    .class-doidev-3 {
      width: 50px;
      height: 50px;
      background:red;
      /* canh giữa theo chiều dọc*/
      position: absolute;
      top:50%;
    }
</style>
Hiển thị cho ví dụ trên

Nhưng theo ví dụ trên thì cạnh trên của khối div đã được canh giữa. Nhưng nếu chúng ta muốn canh giữa khối Div thì phải thêm margin âm để cho khối div di chuyển lên. Ở đây vì độ cao của khối Div là 50px nên ta phải lấy độ cao chia cho 2 bằng 25px chính là margin âm và ví dụ trên viết lại như sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="container-doidev-4">
    <div class="class-doidev-4"></div>
</div>

<style>
    .container-doidev-4 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      position: relative;
    }
    .class-doidev-4 {
      width: 50px;
      height: 50px;
      background:red;
      /* canh giữa theo chiều dọc*/
      position: absolute;
      top:50%;
      margin-top:-25px;
    }
</style>
Hiển thị cho ví dụ trên
Cách 2

Dùng Transform translate

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="container-doidev-5">
    <div class="class-doidev-5"></div>
</div>

<style>
    .container-doidev-5 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      position: relative;
    }
    .class-doidev-5 {
      width: 50px;
      height: 50px;
      background:red;
      /* canh giữa theo chiều dọc*/
      position: absolute;
      top:50%;
      transform:translateY(-50%)
    }
</style>
Hiển thị cho ví dụ trên

Dùng flexbox

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<div class="container-doidev-6">
    <div class="class-doidev-6"></div>
</div>

<style>
    .container-doidev-6 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      display:flex;
      align-items:center;
    }
    .class-doidev-6 {
      width: 50px;
      height: 50px;
      background:cyan;

    }
</style>
Hiển thị cho ví dụ trên

Canh giữa cả chiều ngang và dọc

1. Dùng Position absolute & negative margin

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div class="container-doidev-7">
    <div class="class-doidev-7"></div>
</div>

<style>
    .container-doidev-7 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      position:relative;
    }
    .class-doidev-7 {
      width: 50px;
      height: 50px;
      background:green;
      /* Canh giữa hai chiều ngang dọc */
      position:absolute;
      top:50%;
      left:50%;
      margin:-25px 0 0 -25px;
    }
</style>
Hiển thị cho ví dụ trên

2. Dùng position absolute & transform translate

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div class="container-doidev-8">
    <div class="class-doidev-8"></div>
</div>

<style>
    .container-doidev-8 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      position:relative;
    }
    .class-doidev-8 {
      width: 50px;
      height: 50px;
      background:blue;
      /* Canh giữa hai chiều ngang dọc */
      position:absolute;
      top:50%;
      left:50%;
      transform:translate(-50%, -50%)
    }
</style>
Hiển thị cho ví dụ trên

3. Dùng flexbox

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<div class="container-doidev-9">
    <div class="class-doidev-9"></div>
</div>

<style>
    .container-doidev-9 {
      width:300px;
      height: 200px;
      border: 2px dashed pink;
      /* Canh giữa hai chiều ngang dọc */
      display:flex;
      justify-content:center;
      align-items:center;
    }
    .class-doidev-9 {
      width: 50px;
      height: 50px;
      background:yellow;
    }
</style>
Hiển thị cho ví dụ trên