Bài 14: Định dạng văn bản bằng CSS – Lý thuyết trọng tâm

Minh họa sử dụng mẫu có sử dụng các ký hiệu * và !important
Mục lục [Ẩn]

Chọn đến phần học sinh cần nhanh chóng thông qua mục lục bằng cách click đến phần đó

I. Lý thuyết trọng tâm

1. Định dạng văn bản bằng CSS

Các định dạng văn bản trong CSS đều liên quan đến định dạng ký tự, bao gồm phông chữ, màu chữ và kiểu chữ. Các thuộc tính CSS tương ứng được chia thành ba nhóm chính: định dạng phông chữ (text font), màu chữ (text color) và dòng văn bản (text line).

Đoạn văn bản trên trang web (Ảnh Sách KNTT)
Đoạn văn bản trên trang web (Ảnh Sách KNTT)

1.1. CSS định dạng phông chữ

CSS hỗ trợ thiết lập các thuộc tính liên quan đến việc chọn phông (font-family), chọn cỡ chữ (font-size), chọn kiểu chữ (font-style), độ dày nét chữ (font-weight) và nhiều thuộc tính khác.

a) Thuộc tính font-family (chọn phông chữ)

CSS cho phép thiết lập mẫu định dạng chọn phông sử dụng thuộc tính font-family. Trên máy tính có thể cài đặt nhiều phông chữ khác nhau, mỗi phông chữ có một tên riêng. Tuy nhiên, các phông chữ có thể được chia làm năm loại sau:

Loại phông Tên tiếng Anh Đặc điểm
Chữ có chân serif Có nét gạch nhỏ ở cuối các nét chữ
Chữ không chân sans-serif Không có nét gạch ở cuối nét chữ
Chữ có chiều rộng đều monospace Mọi ký tự có cùng chiều rộng
Chữ viết tay cursive Giống chữ viết tay
Chữ trừu tượng fantasy Kiểu chữ trang trí đặc biệt
Font-family (Ảnh Sách KNTT)
Font-family (Ảnh Sách KNTT)

Cú pháp:

selector {font-family: tên_phông_1, "tên_phông_2", loại_phông;}

Ví dụ:

h1 {font-family: Times, "Times New Roman", Tahoma, serif;}

Giải thích ví dụ trên:

  • Mẫu CSS thiết lập phông chữ cho các thẻ h1
  • Lựa chọn các phông ưu tiên theo thứ tự: Times → Times New Roman → Tahoma → một phông loại có chân bất kỳ
  • Trình duyệt sẽ lần lượt tìm các phông trong danh sách từ trái sang phải để chọn thể hiện văn bản
  • Nếu không tìm thấy phông chữ nào trong danh sách thì sẽ chọn phông cùng loại bất kỳ

Lưu ý quan trọng:

  • Nếu tên phông chữ có chứa dấu cách thì cần đặt trong hai dấu nháy kép (hoặc nháy đơn)
  • Danh sách các phông chữ thường cùng loại và tên của loại phông đó ở vị trí cuối cùng
b) Thuộc tính font-size (cỡ chữ)

Thuộc tính này thiết lập kích thước chữ cho văn bản.

Cú pháp:

selector {font-size: cỡ_chữ;}

Các dạng giá trị cỡ chữ:

Dạng giá trị Ví dụ Giải thích
Đơn vị tuyệt đối cm, mm, in, px, pt cm (centimét), mm (milimét), in (1 inch = 2,54 cm), px (1 pixel = 1/96 inch), pt (1 point = 1/72 inch)
Đơn vị tương đối em, ex, rem em (so với cỡ chữ hiện thời của trình duyệt), ex (so với chiều cao chữ x), rem (so với cỡ chữ của phần tử gốc HTML)
Tỉ lệ phần trăm % So với cỡ chữ của phần tử cha
Các mức định sẵn xx-small, x-small, small, medium, large, x-large, xx-large Cỡ chữ mặc định là medium

Ví dụ:

Mẫu CSS Ý nghĩa
p {font-size: 1.2em;} Thiết lập cho toàn bộ các phần tử p có cỡ chữ bằng 1,2 lần cỡ chữ của trình duyệt hiện thời
html {font-size: 100%;} Thiết lập cỡ chữ mặc định cho toàn bộ trang web theo chế độ mặc định của trình duyệt
c) Thuộc tính font-style (kiểu chữ)

Thuộc tính này thiết lập kiểu chữ thường hay kiểu chữ nghiêng của văn bản.

Các giá trị:

Giá trị Ý nghĩa
normal Kiểu chữ thường
italics Kiểu chữ nghiêng
d) Thuộc tính font-weight (độ đậm nét chữ)

Thuộc tính này thiết lập kiểu chữ đậm cho văn bản.

Các giá trị:

Giá trị Ý nghĩa
normal Bình thường
bold Chữ đậm
100, 200, …, 900 Các mức độ đậm (từ 500 trở lên là viết đậm)

Ví dụ:

em {font-style: italics; font-weight: bold;}
strong {font-style: italics; font-weight: 900;}

Mẫu trên thiết lập các thẻ strongem với kiểu chữ nghiêng và độ đậm khác nhau.

1.2. CSS định dạng màu chữ

Thuộc tính color được sử dụng để thiết lập màu chữ cho văn bản.

Cú pháp:

selector {color: giá_trị_màu;}

Một số giá trị màu cơ bản:

Giá trị Màu
black Đen
white Trắng
purple Tím
blue Xanh dương
orange Cam
red Đỏ
green Xanh lá cây
yellow Vàng

Ví dụ:

h1 {color: red;}
em {color: green;}
* {color: black;}

Giải thích:

  • Các phần tử h1 có chữ màu đỏ
  • Các phần tử em có chữ màu xanh lá cây
  • Toàn bộ các phần tử còn lại có chữ màu đen

Lưu ý: Bộ chọn với ký tự * nghĩa là tất cả các phần tử HTML của trang web.

1.3. CSS định dạng dòng văn bản

Các mẫu định dạng loại này thiết lập các thuộc tính liên quan đến các dòng văn bản khi thể hiện trên trình duyệt.

a) Khái niệm cơ bản

Để hiểu cách định dạng dòng văn bản, cần nắm được hai khái niệm:

  • Đường cơ sở (baseline): Là đường ngang mà các chữ cái đứng thẳng trên nó
  • Chiều cao dòng văn bản (line-height): Là khoảng cách giữa các đường cơ sở của các dòng trong cùng một đoạn văn bản

CSS mặc định coi chiều cao dòng = 2em và thể hiện bằng cách bổ sung khoảng cách phía trên và dưới của văn bản.

Đường cơ sở và chiều cao dòng văn bản (Ảnh Sách KNTT)
Đường cơ sở và chiều cao dòng văn bản (Ảnh Sách KNTT)
b) Thuộc tính line-height (chiều cao dòng)

Thuộc tính này dùng để thiết lập chiều cao dòng cho bộ chọn của mẫu định dạng.

Ví dụ:

p {line-height: 3;}      /* chiều cao bằng 3 lần cỡ chữ hiện thời */
p {line-height: 2em;}    /* chiều cao bằng 2 lần chiều cao dòng hiện thời */
p {line-height: 200%;}   /* chiều cao bằng 200% chiều cao dòng của phần tử cha */
c) Thuộc tính text-align (căn lề)

Thuộc tính này thiết lập căn lề cho các phần tử được chọn.

Các giá trị:

Giá trị Ý nghĩa
left Căn trái
center Căn giữa
right Căn phải
justify Căn đều hai bên

Ví dụ:

p {text-align: right;}   /* thiết lập căn phải */
d) Thuộc tính text-decoration (trang trí dòng văn bản)

Thuộc tính này thiết lập tính chất “trang trí” dòng văn bản bằng các đường kẻ ngang trên, dưới hay giữa dòng. Thuộc tính này sẽ thay thế và mở rộng cho thẻ <u> của HTML.

Các giá trị:

Giá trị Ý nghĩa Minh họa
none Mặc định, không trang trí Văn bản bình thường
underline Đường kẻ dưới chữ Chữ có gạch dưới
overline Đường kẻ phía trên chữ Chữ có gạch trên
line-through Kẻ giữa dòng chữ ~~Chữ có đường kẻ ngang~~
Các định dạng đường kẻ ngang dòng văn bản (Ảnh Sách KNTT)
Các định dạng đường kẻ ngang dòng văn bản (Ảnh Sách KNTT)

Lưu ý: Thuộc tính text-decoration không có tính kế thừa.

e) Thuộc tính text-indent (thụt lề dòng đầu tiên)

Thuộc tính này định dạng thụt lề cho dòng đầu tiên của đoạn văn bản.

Quy tắc:

  • Nếu giá trị lớn hơn 0: dòng đầu tiên thụt vào
  • Nếu giá trị nhỏ hơn 0: dòng đầu tiên lùi ra ngoài (còn gọi là thụt lề treo – hanging indent)

Ví dụ:

p {text-indent: 10px;}   /* Dòng đầu tiên thụt vào đúng 10 pixel */
p {text-indent: 2em;}    /* Dòng đầu tiên thụt vào bằng 2 ký tự */
p {text-indent: 5%;}     /* Dòng đầu tiên thụt vào 5% chiều rộng dòng của phần tử cha */

Ghi nhớ: Các mẫu định dạng văn bản cơ bản bao gồm các thuộc tính liên quan đến phông chữ, màu chữ và định dạng dòng văn bản.

2. Tính kế thừa và cách lựa chọn theo thứ tự của CSS

2.1. Tính kế thừa của CSS

Một tính chất rất quan trọng của CSS là tính kế thừa. Nếu một mẫu CSS áp dụng cho một phần tử HTML bất kỳ thì nó sẽ được tự động áp dụng cho tất cả các phần tử là con, cháu của phần tử đó trong mô hình cây HTML.

Ngoại lệ: Các phần tử có mẫu định dạng riêng sẽ không kế thừa.

Ví dụ:

<style>
    body {color: blue;}
    h1 {color: red; text-align: center;}
</style>
<body>
    <h1>Tính kế thừa của CSS</h1>
    <h2>1. Mô hình cây html</h2>
    <p>Đây là đoạn đầu tiên...</p>
</body>
Minh họa tính kế thừa của CSS (Ảnh Sách KNTT)
Minh họa tính kế thừa của CSS (Ảnh Sách KNTT)

Giải thích:

  • Thẻ h1 có chữ màu đỏ do được định dạng theo mẫu CSS riêng
  • Các phần tử h2p đều kế thừa từ phần tử cha body nên có chữ màu xanh dương

2.2. Thứ tự ưu tiên khi áp dụng mẫu CSS

Do được phép có nhiều mẫu định dạng CSS nên có thể xảy ra trường hợp nhiều mẫu cùng áp dụng cho một phần tử HTML. Khi đó, trình duyệt sẽ thực hiện mẫu định dạng được viết cuối cùng.

Đây chính là tính chất “cascading” (xếp tầng) của CSS.

Ví dụ:

<style>
    body {color: blue;}
    h1 {color: red; text-align: center;}
    h1 {text-align: left;}
</style>
Minh họa thứ tự ưu tiên của các mẫu CSS (Ảnh Sách KNTT)
Minh họa thứ tự ưu tiên của các mẫu CSS (Ảnh Sách KNTT)

Giải thích:

  • Có hai mẫu CSS cùng áp dụng cho h1
  • Mẫu đầu quy định căn giữa (text-align: center)
  • Mẫu sau quy định căn trái (text-align: left)
  • Kết quả: phần tử h1 được căn trái theo mẫu cuối cùng

2.3. Sử dụng ký hiệu * và !important

CSS còn cho phép sử dụng hai ký hiệu đặc biệt là *!important với ý nghĩa như sau:

Ký hiệu Ý nghĩa Mức ưu tiên
* Dùng trong bộ chọn, có nghĩa là phần tử bất kỳ. Định dạng này sẽ áp dụng cho mọi phần tử mà chưa có trong bất cứ mẫu định dạng nào khác của CSS Thấp nhất
!important Nếu được sử dụng trong một mẫu định dạng thì thuộc tính tương ứng sẽ được ưu tiên cao nhất, không phụ thuộc vào vị trí của mẫu trong CSS Cao nhất

Cú pháp !important:

selector {thuộc_tính: giá_trị !important;}

Lưu ý: Ký hiệu !important cần được viết ngay sau thuộc tính cần đánh dấu ưu tiên. Chỉ thuộc tính này của bộ chọn có thứ tự ưu tiên cao nhất.

Ví dụ:

<style>
    h1 {
        text-indent: 0em;
        color: blue;
        text-align: center !important;
    }
    h1 {text-align: left; color: red;}
    * {text-indent: 1em; color: blue;}
</style>
Minh họa sử dụng mẫu có sử dụng các ký hiệu * và !important
Minh họa sử dụng mẫu có sử dụng các ký hiệu * và !important

Phân tích ví dụ trên:

  • Mẫu đầu tiên của h1 có ký hiệu !important với thuộc tính text-align: center → thuộc tính này được ưu tiên cao nhất
  • Mẫu thứ hai của h1text-align: left; color: red; → thuộc tính màu sắc (red) sẽ được ưu tiên áp dụng (vì viết sau)
  • Mẫu cuối cùng có ký hiệu * → có mức ưu tiên thấp nhất mặc dù được viết ở vị trí cuối cùng

Kết quả: Phần tử h1 sẽ có chữ màu đỏ, căn giữa.

Ghi nhớ: Các mẫu định dạng CSS được áp dụng theo nguyên tắc kế thừa trong mô hình cây HTML. Nếu mẫu định dạng được viết cho một phần tử thì sẽ được áp dụng mặc định cho tất cả các phần tử con, cháu. Nếu có nhiều mẫu định dạng được viết cho cùng một bộ chọn thì mẫu viết sau cùng sẽ được áp dụng. Nếu bộ chọn có ký tự * thì được áp dụng cho mọi phần tử nhưng với độ ưu tiên thấp nhất. Ngược lại, mẫu định dạng với ký hiệu !important có mức ưu tiên cao nhất.

Thầy Phạm Thành Danh

Thầy Phạm Thành Danh

(Người kiểm duyệt, ra đề)

Chức vụ: Trưởng ban biên soạn môn Tin Học THPT

Trình độ: Cử nhân Sư phạm Tin học, Chứng chỉ hạng II, Chứng chỉ Tin học, Ngoại ngữ B1

Kinh nghiệm: 8+ năm kinh nghiệm tại Trường THPT Thuận Hóa