CSS Note 1

1. Đơn vị đo

Đơn vị tuyệt đối

Là các đơn vị vật lý đã được định nghĩa sẵn và đại diện cho các đơn vị đo lường vật lý. Các đơn vị này không bị phụ thuộc và không hề thay đổi bởi bất cứ tác động nào. Ví dụ như đơn vị mét, xen-ti-mét,..là các đơn vị tuyệt đối.
Các đơn vị tuyệt đối sử dụng trong CSS gồm có:
  • px: Đây là một đơn vị được sử dụng trên màn hình hiển thị, một px sẽ tương đương với một điểm ảnh trên màn hình hiển thị. Chất lượng của điểm ảnh sẽ hoàn toàn khác nhau trên một số thiết bị, ví dụ như một điểm ảnh trên các thiết bị in ấn sẽ khác với một điểm ảnh trên các thiết bị màn hình độ phân giải thấp.

Đơn vị tương đối

Là các đơn vị đo lường được sử dụng trong CSS ở mức tương đối, nghĩa là nó có thể sẽ được thay đổi bởi các thành phần khác ví dụ như thay đổi phụ thuộc vào kích thước màn hình.
Các đơn vị tương đối được sử dụng trong CSS gồm có:
  • % (percentages): Là đơn vị tham chiếu tỷ lệ so với một phần tử mẹ của nó dựa vào kích thước. Ví dụ bạn có một cái khung với kích thước là 500px và khung bên trong có kích thước là 50% thì nó sẽ là 250px. Nếu bạn sử dụng đơn vị phần trăm này để gán kích thước cho thẻ <html> trên website thì nó sẽ thay đổi theo kích thước màn hình hoặc/cửa sổ website.
  • em: Là đơn vị tham chiếu tỷ lệ so với phần tử mẹ của nó dựa vào giá trị của thuộc tính font-size. Ví dụ bạn đặt cho font-size cho phần tử mẹ của nó là 19px thì nếu bạn sử dụng em trong khu vực phần tử đó thì 1em = 19px.
  • rem: Là đơn vị tham chiếu tỷ lệ so với phần tử gốc của một website dựa vào thuộc tính font-size, nghĩa là sẽ biến đổi tùy theo giá trị của thuộc tính font-size trong thẻ <html>. Cũng như rem, nếu bạn khai báo font-size cho thẻ <html> là 16px thì 1rem = 16px.

2. Các thuộc tính văn bản.

Text Styles trong CSS hiện tại có khoảng 13 thuộc tính được sử dụng bao gồm căn lề văn bản, trang trí văn bản, định hướng văn bản,….Cụ thể là có các thuộc tính thường dùng sau:
  • text-align: Căn lề văn bản. (left, right, centre, justify - đều 2 bên)
  • text-decoration: Trang trí văn bản.
    • overline: gạch trên chữ
    • underline: gạch dưới chữ
    • line-through: gạch ngang chữ
    • none: không có gạch gì cả
  • text-indent: Thêm khoảng trống trước văn bản theo chiều ngang từ trái sang phải, giá trị của nó là số kèm theo đơn vị đo lường.
    • text-indent: 15px;
  • text-shadow: Thêm bóng cho văn bản.
    • text-shadow: [màu sắc] [tọa độ x y] [độ mờ];
    • text-shadow: blue 2px 3px 4px;
    • text-shadow: red 2px -1px 3px, blue -2px 1px 2px; Có bóng đổ đỏ, xanh
  • text-transform: Tùy chỉnh việc hiển thị chữ in hoa.
    • text-transform: uppercase;

3. Trang trí phông chữ.

Font-family:

Cú pháp: font-family: tên-font, tên-font-backup, tên-font-backup,...;
Các font chữ được thiết lập trong CSS theo cách thông thường thì nó sẽ lấy font chữ trên máy tính ra để hiển thị. Điều này có nghĩa là nếu bạn thiết lập một font mà trên máy của người dùng không có thì nó sẽ không hiển thị được.
Khi thiết lập font chữ, bạn cần biết trước tiên là hai giá trị serif và sans-serif. Trong đó, serif là giá trị font kiểu có chân và sans-serif là giá trị kiểu font không chân và các font này sẽ lấy dựa theo font chữ cơ bản trên máy tính.

Các font cơ bản trên máy tính

Một lời khuyên khi sử dụng font chữ trên website là nên ưu tiên việc sử dụng các font cơ bản trên máy tính mà đại đa số người dùng máy tính đều có. Các font cơ bản trên máy tính bao gồm:
Serif
  • Palatino
  • Time New Roman
  • Georgia
Sans Serif
  • Arial
  • Helvetica
  • Verdana
  • Tahoma
Bạn có thể dùng một tập hợp font stack các font chữ cơ bản trên máy tính để dự phòng. Ví dụ: 
font-family: Helvetica, Arial, Tahoma, sans-serif;

Tra cứu font stack

Nếu bạn có nhu cầu tham khảo các font chữ phổ biến nhất trên máy tính và copy đoạn code sử dụng font chữ tối ưu nhất thì bạn có thể tra cứu tại trang www.cssfontstack.com để lấy font stack chuẩn và an toàn hơn để chắc chắn website mình hiển thị tốt với đại đa số người dùng, cả Windows và Mac.

font-style

Thuộc tính font-style là để bạn thiết lập chữ viết được hiển thị dưới dạng in nghiêng hoặc bình thường. Thuộc tính này có 3 giá trị là normal (bình thường), italic (in nghiêng), oblique (cũng là nghiêng).

Việc tùy chỉnh in đậm chữ viết có hẳn một thuộc tính riêng đó là font-weight. Giá trị của nó là là từ100,200300,….900, số càng lớn thì chữ càng đậm và “mập” ra.
Ngoài ra nếu bạn không thích dùng số thì bạn có thể dùng các giá trị kiểu chữ lànormal,bold. Nếu phần tử mẹ của nó đã được thiết lập font-weight thì có thể dùng giá trị lighter và bolder để thiết lập độ đậm tương đối.

color

Để thiết lập màu chữ, bạn sẽ dùng thuộc tính color và thuộc tính này hiện tại hỗ trợ chính thức 3 kiểu giá trị biểu diễn màu sắc cần sử dụng đó là kiểu tênkiểu HEX và kiểu RBG

Font-size
Để đổi kích thước của chữ, bạn có thể sử dụng thuộc tính font-size và thuộc tính này chỉ có một giá trị duy nhất là số kèm đơn vị đo lường.

4. Phần tử khối Block và phần tử nội dòng In line.

CSS Layout là thuật ngữ chỉ chung về việc dựng bố cục cho website dựa trên việc sử dụng và tùy biến các khối, phần tử.

Block là gì?

Phần tử khối (Block Elements) là thuật ngữ chỉ chung các thẻ HTML có chức năng tạo một khu vực hay nói dễ nghe xíu là một khối. Khối này có nghĩa là một thẻ khi mà bạn khai báo thì nó sẽ được hiển thị ở mỗi dòng riêng biệt bao gồm các nội dung nằm bên trong. Ở các bài học HTML cơ bản bạn có thể đã biết qua một số thẻ block cơ bản như <p><ul><ol><h1>,…
Và khi bạn học tới CSS, bạn sẽ dùng một thẻ rất quan trọng nữa đó là <div> và đây là một thẻ được dùng để tạo các block hay một khu vực nào đó để dễ dàng viết CSS sau này.

Inline là gì?

Phần tử nội dòng (Inline Elements) là thuật ngữ chỉ chung các thẻ HTML khi mà khai báo vào nội dung thì nó vẫn sẽ nằm chung một dòng với các văn bản khác. Một số thẻ inline rất hay dùng đó là <b><strong><i><u>,…và đặc biệt là <span> nếu bạn cần gộp nhóm các phần tử nào đó mà không ảnh hưởng đến các văn bản chung một hàng, thẻ <span> này có ý nghĩa và cách sử dụng giống như <div> nhưng nó được dùng trong inline.

Tại sao việc hiểu Block và Inline lại quan trọng?

Khi sử dụng CSS để dựng bố cục website mà bạn chưa hiểu rõ về Block và Inline thì có thể sẽ gặp một số khó khăn nếu đụng tới một số phần khó. Chẳng hạn như bạn sẽ không biết sử dụng <div> và <span> thế nào cho hợp lý, không thể sửa kiểu hiển thị một số phần tử theo ý muốn,…và đây là vấn đề khá quan trọng sau này mà chỉ khi tiến hành thực hành nhiều với CSS bạn mới thấy được.

5. Thẻ DIV và tạo bố cục website.

Ý nghĩa của thẻ <div>?

Thẻ <div> là gì? Đây là cái thẻ mà nó là chữ viết tắt của division (nghĩa là khu trong tiếng Việt theo từ điển kỹ thuật chung) được sử dụng để tạo ra một khu vực kiểu block nào đó trên một website, hay bạn có thể hiểu là gom nhóm tập hợp các phần tử trên website vào một khu vực với thẻ <div>.
Tạo khu vực với thẻ
Tạo khu vực với thẻ <div>
Ví dụ thường thì một website sẽ có 4 phần chính là header (hiển thị banner, logo), content (hiển thị nội dung), sidebar (cột bên cạnh nội dung) và footer (khu vực chân website). Vậy thì bây giờ mình có thể tạo ra 4 thẻ <div> với 4 id khác nhau nhằm chia khu vực ra. Trong mỗi khu vực mình có thể thêm nội dung riêng cho nó 

6. Box Model và các thuộc tính

Box Model là một kỹ thuật cơ bản nhất trong CSS Layout và được sử dụng để bạn mô tả về khoảng cách mà mỗi phần tử trên website được sở hữu, hay nói cách khác là kỹ thuật tinh chỉnh khoảng cách hiển thị cho mỗi phần tử trên website.
Kỹ thuật Box Model trong CSS bao gồm 4 phần quan trọng đó là:
  • Margin: Khoảng cách tính từ bên ngoài của phần tử.
  • Border: Đường viền của phần tử.
  • Padding: Khoảng cách tính từ bên trong của phần tử.
  • Content: Nội dung trong phần tử.
4 phần này chúng ta có cái hình ảnh (mượn từ W3Scools) như sau:
box-model
Và trong 4 thành phần trên thì phần content chúng ta sẽ không có thuộc tính CSS nào đại diện cả vì nó là nội dung trong phần tử.
margin: top right bottom left;
border: top right bottom left;
padding: top right bottom left;
Padding nghĩa là chúng ta sẽ thiết lập khoảng cách được tính từ phần Content trở ra viền của phần tử, đơn giản vậy thôi. Padding được khai báo trong CSS bởi thuộc tính padding với giá trị theo tuần tự top right bottom left (trên > phải > dưới > trái) và giá trị là số kèm theo đơn vị đo lường.
Ví dụ ở dưới mình có một cái thẻ <div> và mình sẽ sử dụng padding để tạo khoảng cách cho top và bottom là 20px, còn left và right là 15px.
Tuy nhiên, nếu bạn muốn thiết lập padding cho top và bottom cùng giá trị, left và right cùng giá trị thì có thể viết giá trị theo cách ngắn gọn là 20px 10px, tức là top và bottom sẽ có 20px và left và right sẽ có 10px.
Còn nếu bạn nhập một giá trị duy nhất thì nó sẽ căn đều cho 4 mặt với giá trị đó, ví dụ như bạn chỉ nhập 20px thì nó sẽ tạo khoảng cách cho 4 mặt đều là 20px.
Ngoài thuộc tính padding thì thuộc tính này còn có 4 thuộc tính con khác đó là padding-toppadding-bottompadding-left và padding-right và mỗi thuộc tính là để thiết lập giá trị cho từng mặt cụ thể.

Border

Border nghĩa là thuộc tính để bạn tạo viền cho phần tử và nó sẽ được khai báo bằng thuộc tính border trong CSS.
border: [size] [type] [color];
border: 1px solid red;
Trong border có hỗ trợ một số type nhưsolid,dotteddouble,groove,ridgeinset vàoutset.
Giống như các thẻ trong Box Model khác, border cũng có các thẻ con là border-topborder-rightborder-bottom và border-left.

Margin

Trong khi Padding có nhiệm vụ tạo khoảng cách giữa phần Content với Border thì Margin sẽ có tác dụng tạo khoảng cách từ Border trở ra ngoài, nói dễ hiểu thì nó sẽ giúp bạn tinh chỉnh khoảng cách giữa các phần tử với nhau. Để dễ hiểu hơn thì các bạn hãy xem ví dụ bên dưới.
Bạn thấy #box1 và #box2 có một khoảng trắng chứ? Đó là margin, bạn hãy ấn qua tab CSS xem thì sẽ thấy ở #box2 mình có gắn thêm margin: 32px 0 0 0, tức là nó sẽ tạo ra một khoảng trắng ở trên đầu của #box2 và các mặt khác thì không tạo ra, cách viết tương tự như padding là 4 giá trị sẽ sắp xếp theo top right bottom left.
Và nó cũng có một số thuộc tính con là margin-topmargin-rightmargin-bottom và margin-left.

Kiểm tra Box Model với Developer Tools

Trên trình duyệt Google Chrome và Firefox có tích hợp sẵn một bộ công cụ dành cho các nhà phát triển website mang tên Developer Tools. Công cụ này có rất nhiều chức năng nhưng ở bài này mình chỉ bày cho bạn cách sử dụng nó để kiểm tra Box Model thôi.
Để bật nó, bạn ấn phím F12 trên bàn phím, sau đó ấn vào tab Computed (Google Chrome) hoặc Box Model (Firefox) bên tay phải..
css-box-model-developer-tools
Trong khung đó bạn sẽ thấy nó mô tả rõ ràng, vùng màu xanh là Content, xanh lá cây là Padding, cam là Border và màu da là Margin.
Để xem thông tin của phần tử bạn muốn thì ấn vào nút tìm kiếm phần tử bên tay trái (Firefox và Google Chrome đều cùng vị trí).
css-box-model-developer-tools-find-element
Bây giờ bạn có thể rê con chuột vào một phần tử nào đó trên website và nhấp vào để xem Box Model bên tay phải, bạn có thể thử nhấp vào từng ô giá trị bên khung Box Model và thay đổi giá trị để xem sự thay đổi của nó (sẽ mất sau khi bạn refresh trình duyệt).
css-box-model-developer-tools-edit

7. Thuộc tính tùy chỉnh kích thước

Tên thuộc tínhMô tảCác kiểu giá trị
heightThiết lập chiều cao của một phần tử.auto
length
%
inherit
max-heightThiết lập chiều cao tối đa của một phần tử.none
length
%
inherit
max-widthThiết lập chiều rộng tối đa của một phần tử.none
length
%
inherit
min-heightThiết lập chiều cao tối thiểu của một phần tử.length
%
inherit
min-widthThiết lập chiều rộng tối thiểu của một phần tử.length
%
inherit
widthThiết lập chiều rộng của phần tử.auto
length
%
inherit
Ở cột các kiểu giá trị, length nghĩa là kiểu giá trị kèm đơn vị nhưpx,pt,emrem và %none là bỏ thiết lập, auto là tự động tính dựa theo chiều còn lại và inherit là thừa kế giá trị đã thiết lập trước đó cho thuộc tính này.
Và xin lưu ý thêm là bạn chỉ có thể thiết lập kích thước với các phần tử Block, Table và các đối tượng (hình ảnh, video, flash,…) chứ không thể thiết lập cho các phần tử Inline.
Đối với các thuộc tính dạng min-*max-* thì nghĩa là nó sẽ căn độ dài của phần tử dựa vào các nội dung bên trong nhưng sẽ có kích thước tối thiểu/tối đa được phép sử dụng. Ví dụ bạn có phần #content, bên trong #content bạn có phần #post và thiết lập chiều rộng cho #post là 500px. Thì nếu bạn đặt thuộc tính max-width cho #content là 400px thì cái thằng #post nó cũng chỉ giãn được tối đa là 400px chứ không thể hơn.

8. Box Sizing

Khi các bạn học qua Box Model trong CSS thì sẽ thấy có một đặc điểm khi sử dụng Padding và Border thì cái khung phần tử của bạn sẽ bị biến đổi kích thước nếu bạn có đặt thêm thuộc tính width và height để thiết lập kích thước cho nó. Ví dụ cái box của bạn có width là 500px và height là 500px (500×500 px)nhưng nếu bạn đặt thêm padding là 15px nữa thì cái khung của bạn sẽ có kích thước là 530×530 px. Bởi vì nếu cộng thêm pading là 15px nữa thì cái khung của bạn sẽ tự động cộng thêm 30px (15px cho top và và 15px cho bottom, tương tự với left và right), tương tự vớiborder.
css-box-sizing-01
Vậy thì nếu bây giờ bạn muốn làm cho phần tử của mình phải giữ nguyên kích thước mặc dù có cộng thêm padding và border thì sẽ cần phải dùng đến thuộc tính box-sizing. box-sizing là một thuộc tính sẽ giúp bạn có thể tính toán và làm chủ được kích thước của một phần tử dựa vào thuộc tính width và height đã được thiết lập bên trong. Hay nói cách khác, là bạn sẽ muốn thuộc tínhwidth và height là kích thước đã bao gồm border và padding.
box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box;

Các giá trị của box-sizing

Hiện tại box-sizing có hỗ trợ một số giá trị như sau:
  • content-box: Giá trị mặc định, nghĩa là giá trị width và height chỉ áp dụng cho khu vực nội dung bên trong, không bao gồm padding, border và margin.
  • border-box: Khi thiết lập giá trị này, thì width và heigh sẽ bao gồm cho cả phần nội dung, padding và border nhưng không bao gồm margin.
  • padding-box: Với giá trị này thì width và height chỉ bao gồm cho phần nội dung và padding, không bao gồm border và margin.
Lưu ýpadding-box chỉ có tác dụng với trình duyệt Firefox.
Như vậy với ba giá trị này, mình khuyến khích các bạn chỉ nên sử dụng giá trị border-box vì nó rất đầy đủ, dễ tính toán cho website.
Theo kinh nghiệm của mình thì khi viết CSS cho website, bạn hãy sử dụng box-sizing với giá trị là border-box cho toàn bộ các phần tử trong website để các phần tử có kích thước chính xác khi bạn khai báo, tránh việc cộng thêm các phần border và padding sẽ gây ra rắc rối nếu bạn dùng hai cái này thường xuyên.
Để thiết lập box-sizing: content-box cho toàn bộ phần tử, chúng ta sẽ sử dụng vùng chọn là *, nghĩa là bao gồm mọi phần tử.
</p>
<p>* {<br />
box-sizing: border-box;<br />
-moz-box-sizing: border-box;<br />
-webkit-box-sizing: border-box;<br />
}</p>
<p>

9. Màu nền và ảnh nền

Màu nền với background-color

Nếu bạn muốn thiết lập màu nền bằng CSS thì có thể sử dụng thuộc tính background-color và giá trị của nó là tên màu, hoặc mã màu HEX/RBG, mình thì thường dùng nhất là mã màu Hex vì nó đa dạng và dễ dùng hơn.

Ảnh nền với background-image

Đối với thuộc tính thêm ảnh nền thì chúng ta sẽ sử dụng background-image và nó còn có thêm khá nhiều thuộc tính khác nữa kèm theo mà mình sẽ nói bên dưới. Dưới đây là ví dụ lấy một tấm ảnh sử dụng làm ảnh nền.
Nhớ là đối với các giá trị loại URL thì bạn phải có một cái hàm url() để bọc cái đường dẫn của URL lại nhé.
Ngoài ra, bạn có thể thêm nhiều ảnh nền khác nhau trên cùng một block bằng cách sử dụng nhiều giá trị url() và các giá trị phải được cách nhau bởi dấu phẩy. Ví dụ:
background-image: url('ảnh 1'), url('ảnh 2');

Tùy chỉnh lặp lại ảnh nền với background-repeat

Mặc định khi sử dụng ảnh nền, thì hình ảnh sẽ được lặp đi lặp lại theo cả chiều ngang và chiều dọc cho đến khi ảnh nền lấp toàn bộ phần tử. Nhưng bạn cũng có thể tùy chỉnh lại việc lặp ảnh nền thông qua thuộc tính background-repeat, nó hỗ trợ các giá trị như sau:
  • no-repeat: Không lặp.
  • repeat-x: Lặp theo chiều ngang.
  • repeat-y: Lặp theo chiều dọc.
  • space: Lặp đều theo chiều ngang và chiều dọc, ảnh nền sẽ cách nhau bằng khoảng trắng.
  • round: Chưa hiểu lắm nên không giải thích.
  • repeat: Mặc định.

Đổi vị trí ảnh nền với background-position

Đối với các tấm ảnh nền cỡ nhỏ hoặc dùng background-size để sửa lại kích thước thì có thể bạn sẽ cần thay đổi vị trí hiển thị của ảnh nền đó, và bạn có thể dùng thuộc tính background-position này. Nó có một số giá trị như sau:
  • top: hiển thị ở trên đầu phần tử.
  • bottom: hiển thị bên dưới phần tử.
  • left: hiển thị bên trái phần tử.
  • right: hiển thị bên phải phần tử.
  • center: hiển thị chính giữa phần tử.
  • y-x: tùy biến vị trí hiển thị theo tọa độ, giá trị đứng trước là y và đứng sau là x. Ví dụ: 15px 10px
Đối với thuộc tính này thì bạn có thể viết tối đa cùng lúc hai giá trị. Ví dụ bạn muốn ảnh của bạn sẽ nằm bên phải phía trên phần tử thì sẽ có giá trị là left top. Bạn cũng có thể thiết lập giá trị cho nhiều ảnh nền cùng lúc kiểu left top, top center.
Ngoài ra còn có thêm một vài thuộc tính dành riêng cho việc tùy biến ảnh nền nữa nhưng bạn có thể tham khảo thêm tại CSS Reference nhé.

10. Chia cột với Float và Clear Float

Chia cột trong CSS là thế nào?

Việc chia cột trong CSS là việc bạn thiết lập những phần tử con trong một phần tử mẹ nằm trên cùng một hàng. Ví dụ, mình muốn phần nội dung website của mình có hai cột thì mình sẽ tạo ra 3 cái <div>, một cái <div> mình gọi nó là container hoặc phần tử mẹ, hai cái <div> còn lại mình gọi là column (cột).

Các bước chia cột trong CSS

Khi chia cột trong CSS, bạn nên làm tuần tự đầy đủ các bước sau để chia cột được chính xác:
  1. Các cột phải luôn có một container, tức là phần tử mẹ bao bọc nó.
  2. Thiết lập chiều rộng cho container.
  3. Thiết lập chiều rộng cho hai cột, tổng chiều rộng trong hai cột phải luôn bằng hoặc ít hơn chiều rộng của container.
  4. Nên sử dụng box-sizing: border-box để tính toán kích thước chính xác.
  5. Sử dụng thuộc tính float với giá trị left và right để đẩy phần tử về sang trái hoặc phải.
  6. Tiến hành clear float.
Trước tiên, chúng ta sẽ tiến hành thiết lập chiều rộng cho class container, nên thêm một cái border để tí nữa bạn sẽ hiểu clear float là thế nào:

</p>
<p>/*==Thiết lập container==*/</p>
<p>.container {<br />
   width: 960px;<br />
   border: 1px solid #333;<br />
   padding: 10px;<br />
}</p>
<p>

Tiếp tục, chúng ta thiết lập chiều rộng của #post và mình sẽ muốn cột #post sẽ chiếm 660px, đồng thời thêm màu sắc cho hai thằng này để dễ nhìn một xíu.

</p>
<p>/*==cột #post==*/<br />
#post {<br />
   width: 660px;<br />
   height: 150px;<br />
   background: #e8e8e8;<br />
}</p>
<p>

Tương tự với #sidebar nhưng ta muốn cột #sidebar chỉ 300px mà thôi.

</p>
<p>/*==cột #sidebar==*/<br />
#sidebar {<br />
 width: 300px;<br />
 height: 150px;<br />
 background: #b1b1b1;<br />
}</p>
<p>

Giờ ta đã có được như thế này:
chia-cot-css-01
Okay, bây giờ mình muốn cái #post nó sẽ nằm bên trái của #sidebar, nên mình sẽ gắn thêm cho #post một thuộc tính float với giá trị làleft.

float: left;

Đồng thời, mình muốn thằng #sidebar sẽ nhảy qua bên phải nên mình sẽ có thuộc tính float cho nó với giá trị làright.

float: right;

Kết quả:
chia-cot-css-03

Cách 2. Sử dụng overflow

Cách này thì gọn lẹ hơn, không cần sửa HTML mà chỉ cần viết thêm overflow: auto; cho container là được.
Kết quả y hệt ở trên.















Nhận xét

Bài đăng phổ biến từ blog này

#7 Phương pháp xác định nhanh 6 mẫu âm giai trong Guitar Lead

Làm Chủ 7 Mode Trong Guitar Lead [Chơi ở tất cả các Tone]

#1 Âm giai trưởng (The major Scale) và Pattern 6/4