css toàn tập

Màu nền
Font chữ
Font size
Chiều cao dòng

quyển sách này) đó là Pearl không phải là một chuyên gia về  CSS mà chỉ  là một 

“tay ngang trong nghề” mà thôi (cụ  thể  là Pearl cũng chỉ  lên mạng học từ  các tài 

liệu tiếng Anh chứ  cũng không phải qua trường lớp đào tạo bài bản gì cả). Còn về

quyển sách này thì phải nói từ  hồi đầu tháng 6 năm rồi (rối chuyện thế  đấy, nhưng 

ai quen Pearl đều biết Pearl có tính hay “tường trình” vậy mà (smile)), Pearl vào 

blog anh Tân thấy ảnh có dịch mấy bài tut CSS từ HTML.net  mà trong bài mở đầu 

lại  có  ghi tên  các “cao thủ” CSS trên Opera:  chị  Hiền,  chị  Liên,  Phạm Lâm, và cả

Pearl  (còn ai nữa không thì quên rồi, tại  ảnh giấu mấy bài này rồi). Đúng là rối 

chuyện thật, chả  nhẽ  lại đi khiếu nại cái chuyện “Pearl chỉ  là tay ngang  thôi” sao. 

Thôi thì có người bảo mình là “cao thủ” cũng cứ chịu vậy, nhưng ngặt cái “có tiếng 

phải có miếng” chứ, các “cao thủ” kia thì điều có viết tut, tip hướng dẫn làm blog, 

sửa  skin  cả.  Trong  khi  đó,  mình  lại  chả  viết  gì  cho  cộng  đồng  thì  đâu  có  được

(không phải Pearl lười, tại mấy người kia viết hết rồi đó chứ, với lại Pearl cũng 

không thích viết tut, tip như họ, trông cứ  như công thức nấu ăn vậy (big green)), 

nên Pearl mới nhào vô xin dịch mấy bài coi như là mình đóng góp tí đỉnh cho cộng 

đồng (ặc,  cũng là có ý dụ  dỗ  các “cao thủ” kia vào chia phần thôi, cứ  bao nhiêu 

“cao thủ” như thế  này thì có thêm chục bài nữa cũng 1 tuần là xong  (roll eyes)… 

ảnh mừng quá, cho dịch 2 bài cuối (chuối, người ta đang muốn làm ngay mà, bảo 

dịch bài cuối chẳng phải dụ dỗ Pearl lười biếng đó sao, mà kệ)… Tới cuối tháng 6, 

ảnh về  quê nghỉ  hè, về  được rồi thì trốn biệt luôn, Pearl cũng quên mất luôn… tới 

tháng 8 mới thấy anh lên blog: không rảnh, lâu lâu về  quên, cần thời gian với gia 

đình (ai đọc blog anh này cũng biết “người yêu vợ” rồi)… đã thế Pearl dịch tất cho 

xong… tới trung tuần tháng 8, bắt đầu dịch,… người học dở Anh văn mà dịch mau 

ghê,  dịch  hơn  10  ngày  là  hết  16  tut  luôn…  định  tháng  9,  biên  tập  lại  rồi  phát 

hành… Định là thế, nhưng tới tháng 9, Pearl cài lại máy  1 phát, rồi lo lùng sục, 

nhồi nhét phần mềm, sách, nhạc vào lại  ổ  cứng, tốn những hai tuần,… quên tập 2, 

mấy bài tut đó đành xếp xó tiếp… Mãi tới tháng rồi, cụ  thể  là sau Giáng Sinh 3 

ngày, Pearl lại lôi 16 bài dịch đó ra biên tập lại (hem phải tại siêng đột xuất, mà tại 

sắp  hết  năm  với  lại  đây  cũng  là  hoạt  động  kỷ  niệm  ngày  thành  lập  WallPearl’s 

Blog), biên tới, biên lui tốn cả  tuần mới xong. Đọc lại mới thấy, 16 tut của HTML 

dot net còn thiếu nhiều cái lắm. Thế  là lại lấy thêm tài liệu từ  W3  School  để  bổ 

Trang 7

Simple CSS Standard Edition WallPearl

khuyết, rồi lại muốn lấy thêm nhiều tài liệu khác thêm vô, thêm cả CSS3 vô, rốt lại 

trông nó hỗn hợp quá nên sau cùng Pearl phân ra 2 bản:

  Bản Simple CSS Standard Edition: Bao gồm nội dung chủ  yếu từ  16 tut của 

HTML.Net, chỉ bổ sung 1 số chỗ về cú pháp CSS và độ ưu tiên của CSS.

  Bản Simple CSS Advanced Edition: Bao gồm nội dung của HTML.Net trộn 

với W3 School có thêm phần phụ lục về CSS3 và nhiều thứ cần thiết khác.

Phần “tường trình” tới đây là kết thúc. Chắc chắn là ít có quyển sách nào lại 

có phần tường trình như quyển sách này (chí ít thì không có quyển sách in nào lại 

viết vụ  này). Điều này chẳng qua là Pearl dở  văn,  không  viết uốn éo,  ẻo lả  được, 

chỉ biết viết theo những gì mình nghĩ, theo những gì mình biết thôi (smile)

Do đây là lần đầu tiên Pearl thực hiện một quyển sách hướng dẫn về  một đề

tài tin học, hơn nữa do khả  năng kiến thức, kiến văn hạn hẹp nên chắc chắn quyển 

sách này vẫn còn rất nhiều thiếu sót, nên Pearl rất mong nhận được ý kiến đánh giá 

của mọi người. 

Sau cùng, Pearl xin chân thành gửi lời cảm ơn tới  HTML.Net, W3  School, 

CSS3.Info  và nhiều trang web khác đã cung cấp tài liệu để Pearl hoàn thành quyển 

sách này. Cảm ơn tất cả các bạn blogger đã ủng hộ, cổ vũ Pearl trong thời gian vừa 

qua. 

Mọi ý kiến đóng góp có thể  post trực tiếp trên các blog của Pearl hoặc qua 

địa chỉ email [email protected] hoặc [email protected]

Tháng 1, năm 2008

.:WallPearl:.

Trang 8

Simple CSS Standard Edition WallPearl

Bài 1: Giới Thiệu



1.1.  CSS là gì?

Trong lĩnh vực xây dựng, chúng ta có trang trí nội thất; trong lĩnh vực thẩm 

mỹ - làm đẹp, chúng ta có kỹ thuật make-up; còn trong lĩnh vực thiết kế web chúng 

ta có CSS. Đây chỉ  là một định nghĩa giàu hình  ảnh của Pearl thôi  (nhưng cũng 

thực tế nhỉ  (smile). Còn CSS (Cascading Style Sheets mà Pearl t ạm dịch là tờ  mẫu 

theo Style Sheets) là một ngôn ngữ  quy định cách trình bày cho các tài liệu viết 

bằng HTML, XHTML, XML, SVG, hay UML,… 

1.2.  Tại sao CSS?

Nếu bạn đã từng học qua HTML thì cũng biết HTML cũng hỗ  trợ  một số

thuộc tính định dạng cơ bản cho text, picture, table, … nhưng nó không thật sự

phong phú và chính xác như nhau trên mọi hệ  thống. CSS cung cấp cho bạn hàng 

trăm thuộc tính trình bày dành cho các đối tượng với sự sáng tạo cao trong kết hợp 

các thuộc tính giúp mang lại hiệu quả. Ngoài ra, hiện tại CSS đã được hỗ trợ bởi tất 

cả  các trình duyệt, nên bạn hoàn toàn có thể  tự  tin trang web của mình có thể  hiển 

thị  hầu như “như nhau” dù trên một  hệ  thống sử  dụng Windows, Linux hay trên 

một máy Mac miễn là bạn đang sử dụng một phiên bản trình duyệt mới nhất.

Sử  dụng các mã định dạng trực tiếp trong HTML tốn hao nhiều thời gian 

thiết  kế  cũng  như  dung  lượng  lưu  trữ  trên  đĩa  cứng.  Trong  khi  đó  CSS  đưa  ra 

phương thức “tờ mẫu ngoại” giúp áp dụng một khuôn mẫu chuẩn từ một file CSS ở

ngoài. Nó thật sự  có hiệu quả đồng bộ khi bạn tạo một website có hàng trăm trang 

hay  cả  khi  bạn  muốn  thay  đổi  một  thuộc  tính  trình  bày  nào  đó.  Hãy  thử  tưởng 

tượng bạn có một website với hàng trăm trang và bạn muốn thay đổi font chữ  hay 

màu chữ  cho một thành phần nào đó. Đó thật sự  sẽ  là một công việc buồn chán và 

tốn nhiều thời gian. Nhưng với việc sử  dụng CSS việc đó là hoàn toàn đơn giản 

cũng như là bạn có một trò ma thuật nào đó.

Ngoài ra, CSS còn cho phép bạn áp đặt những kiểu trình bày thích hợp hơn 

cho các phương tiện khác nhau như màn hình máy tính, máy in, điện thoại,… 

Trang 9

Simple CSS Standard Edition WallPearl

CSS được cập nhật liên tục mang lại các trình bày phức tạp và tinh vi hơn.

1.3.  Học CSS cần những gì?

Thật sự  không có một điều kiện gì được quy định khi học CSS. Nhưng  ở

một khía cạnh nào đó thì một sự  chuẩn bị  cho một cuộc hành trình dù là dễ  nhất 

vẫn không thừa vì ít nhất nó sẽ giúp bạn làm tốt hơn.

Hành trang thứ  nhất  mà bạn nên có là một kiến thức về  HTML, nó không 

thật sự  cần thiết nếu bạn chỉ  dùng CSS để  trình bày cho một trang HTML có sẵn 

(như làm  skin  cho blog  chẳng hạn), nhưng bạn  vẫn  cần biết ý  nghĩa  một  số  thẻ

HTML, nó sẽ  có ích khi bạn viết CSS. Tuy nhiên,  nếu  bạn muốn tự  thiết kế, trình 

bày một trang web của riêng mình thì tùy theo quy mô trang web, b ạn cần phải học 

thêm cả HTML, XHMTL, Javascript và một số ngôn ngữ lập trình web khác.

Hành trang thứ  hai chính là một trình soạn thảo văn bản để  bạn có thể  viết 

mã CSS.  Ở  đây,  Pearl  khuyên bạn nên sử  dụng một trình soạn thảo đơn giản như 

Notepad, Wordpad trong Windows hay Pico trong Linux, Simple Text trong Mac. 

Nó sẽ giúp bạn chắc là code là của bạn và không có bất kỳ  một sự  can thiệt nào từ

chương trình như khi dùng DreamWeaver, FrontPage, Golive,…

Hành trang thứ  ba của bạn chính lả  một phiên bản mới nhất của trình duyệt 

mà bạn thường dùng. 

Và một điều nữa mà  Pearl  muốn đề  nghị  đó là các bạn hãy dành một ít thời 

gian để  thực hành CSS sau mỗi bài học nó sẽ  thật sự  có ích cho bạn. Thực hành 

chẳng những  giúp bạn  vận dụng  nhuần  nhuyễn  các bài học mà  còn  có  tác dụng 

explain ngược lại những lý thuyết mà bạn chưa hiểu.

Bây giờ  nếu bạn đã thật sự  chuẩn bị  chúng ta hãy chuyển qua chương tiếp 

theo để thật sự bước chân vào thế giới CSS.

Trang 10

Simple CSS Standard Edition WallPearl

Bài 2: Một Số Quy Ước Về Cách Viết CSS



2.1.  Cú pháp CSS:

Để tìm hiểu cú pháp CSS chúng ta hãy thử xem một ví dụ sau.

Ví dụ: Để định màu nền cho một trang web là xanh nhạt (light cyan) chúng ta dùng 

code sau:

+ Trong HTML: <body bgcolor=”#00BFF3”>

+ Trong CSS: body { background-color:#00BFF3; }

Nhìn qua ví dụ  trên ít nhiều chúng ta cũng thấy được mối tương đồng giữa 

các thuộc tính trong HTML và CSS cho nên nếu bạn đã học qua HTML thì cũng sẽ

rất  dễ  dàng  tiếp  thu CSS.  Đó  là  một  chút  lợi thế  của  câu  chuyện  hành  trình  mà 

Pearl  đã  nói  ở  bài  trước.  Nhưng  không  sao  cả,  bây  giờ  hãy  nhìn  vào  ví  dụ  của 

chúng ta và các bạn xem nó có giống với cấu trúc sau không nhé.

Cú pháp CSS cơ bản:

Selector { property:value; } 

Trong đó:

+ Selector: Các đối tượng mà chúng ta sẽ  áp dụng các thuộc tính trình bày. Nó là 

các tag HTML,  class hay id  (chúng ta sẽ  học về  2 thành phần này  ở  bài học sau). 

Ví dụ: body, h2, p, img, #title, #content, .username,…

Trong CSS ngoài viết tên selector theo tên tag, class, id. Chúng ta còn có th ể

viết tên selector theo phân cấp như để  chỉ  các  ảnh  ở  trong #entry, chúng ta viết 

selector là #entry img, như vậy thì các thuộc tính chỉ định sẽ chỉ áp dụng riêng cho 

các ảnh nằm trong #entry. 

Khi viết tên cho class, đôi khi sẽ có nhiều thành phần có cùng class đó, ví dụ

như thẻ  img và thẻ  a cùng có class tên vistors nhưng đây lại là hai đối tượng khác 

nhau, 1 cái là  ảnh của người thăm, 1 cái là liên kết tới trang người thăm. Nên nếu 

Trang 11

Simple CSS Standard Edition WallPearl

khi viết CSS ta ghi là  .visitors { width:50 }  thì sẽ ảnh hưởng tới cả hai thành phần. 

Nên trong trường hợp này, nếu bạn có ý dùng CSS đó chỉ  riêng phần  ảnh thì chỉ

nền ghi là img .visitors thôi.

Một  lối  viết  tên  selector  nữa  đó  là  dựa  trên  tên  các  thuộc  tính  có  trong 

HTML.  Ví  dụ  trong  HTML  ta  có  đoạn  mã  như  vầy:  <input  name=”Search” 

type=”Text”  value=”Key  Word”>.  Để  áp  dụng  thuộc  tính  CSS  cho  riêng  ô  tìm 

kiếm này chúng ta sẽ dùng selector input[name=”Search”].

Ngoài việc viết tên selector cụ  thể, chúng ta cũng có thể  dùng một selector 

đại diện như * { color:red } sẽ tác động đến tất cả các thành phần có trên trang web 

làm cho chúng có text màu đỏ.

+ Property:  Chính là các thuộc tính quy định cách trình bày. Ví dụ: backgroundcolor, font-family, color, padding, margin,… 

Mỗi thuộc tính CSS phải được gán một giá trị. Nếu có nhiều hơn một thuộc 

tính cho một selector thì chúng ta phải dùng một dấu ; (chấm phẩy) để  phân cách 

các thuộc tính. Tất cả  các thuộc tính trong một selector sẽ  được đặt trong một cặp 

ngoặc nhọn sau selector.

Ví dụ: body { background:#FFF; color:#FF0000; font-size:14pt }

Để  dễ  đọc hơn, bạn nên viết mỗi thuộc tính CSS ở  một dòng. Tuy nhiên, nó 

sẽ làm tăng dung lượng lưu trữ CSS của bạn.

Ví dụ: body {

background:#FFF;

bolor:#FF0000;

font-size:14pt 

}

Đối  với  một  trang  web  có  nhiều  thành  phần  có  cùng  một  số  thuộc  tính, 

chúng ta có thể thực hiện gom gọn lại như sau:

h1 { color:#0000FF; 

text-transform:uppercase } 

Trang 12

Simple CSS Standard Edition WallPearl

h2 { 

color:#0000FF; 

text-transform:uppercase; 

}

h3 { 

color:#0000FF; 

text-transform:uppercase; 

}

  h1, h2, h3 { 

color:#0000FF; 

text-transform:uppercase; 

}

+ Value:  Giá trị của thuộc tính. Ví dụ: như ví dụ trên value chính là #FFF dùng để

định màu trắng cho nền trang.

Đối với một giá trị  có khoảng trắng, bạn nên đặt tất cả  trong một dấu ngoặc 

kép. Ví dụ: font-family:”Times New Roman”

Đối với các giá trị  là đơn vị  đo,  không nên đặt một khoảng cách giữa số  đo 

với đơn vị  của nó. Ví dụ: width:100 px. Nó sẽ  làm CSS của bạn bị  vô hiệu trên 

Mozilla/Firefox hay Netscape.

Chú thích trong CSS:

Cũng như nhiều ngôn ngữ  web khác. Trong CSS, chúng ta cũng có thể  viết chú 

thích cho  các đoạn code để  dễ  dàng tìm, sửa chữa trong những lần cập nhật sau. 

Chú thích trong CSS được viết như sau /* Nội dung chú thích */ 

Ví dụ:

/* Màu chữ cho trang web */

body {

color:red

}

Trang 13

Simple CSS Standard Edition WallPearl

2.2.  Đơn vị CSS:

Trong CSS2  hỗ  trợ  các  loại đơn vị  là đơn vị  đo chiều dài và  đơn vị  đo góc, 

thời gian, cường độ âm thanh và màu sắc. Tuy nhiên, sử dụng phổ biến nhất vẫn là 

đơn vị đo chiều dài và màu sắc. Sau đây là bảng liệt kê các đơn vị chiều dài và màu 

sắc dùng trong CSS.

Đơn vị chiều dài

Đơn vị  Mô tả  Đơn vị  Mô tả

%  Phần trăm  ex  1 ex bằng chiều cao của chữ  x 

in  thường  của  font  hiện  hành. 

Do  đó,  đơn  vị  này  không 

những  phụ  thuộc  trên  kích  cỡ

font  chữ  mà  còn  phụ  thuộc 

loại  font  chữ  vì  cùng  1  cỡ

14px  nhưng  chiều  cao  chữ  x 

của  font  Times  và  font 

Tohama là khác nhau.

in  Inch (1 inch = 2.54 cm)

cm  Centimeter

mm  Millimeter

em  1 em tương đương kích thước 

font  hiện  hành,  nếu  font  hiện 

hành có kích cỡ  14px thì 1 em 

= 14 px. Đây là một đơn vị  rất 

hữu  ích  trong  việc  hiển  thị

trang web. 

pt  Point (1 pt = 1/72 inch)

pc  Pica (1 pc = 12 pt)

px  Pixels  (điểm  ảnh  trên  màn 

hình máy tính)

Đơn vị màu sắc

Đơn vị  Mô tả

Color-name  Tên  màu  tiếng  Anh.  Ví  dụ:  black,  white,  red,  green,  blue, 

cyan, magenta,…

RGB (r,g,b)  Màu RGB với 3 giá trị  R, G, B có trị  từ  0  –  255 kết hợp với 

nhau tạo ra vô số màu.

RGB 

(%r,%g,%b)

Màu RGB với 3 giá trị R, G, B có trị từ 0 – 100% kết hợp.

Hexadecimal 

RGB

Mã  màu  RGB  dạng  hệ  thập  lục.  Ví  dụ:  #FFFFFF:  trắng, 

#000000: đen, #FF00FF: đỏ tươi.

Trang 14

Simple CSS Standard Edition WallPearl

2.3.  Vị trí đặt CSS:

Ở  trên chúng ta đã tìm  hiểu về  cú pháp viết CSS, nhưng còn đặt nó  ở  đâu 

trong tài liệu HTML? Trong phần này,  Pearl  xin giới thiệu với các bạn về  vấn đề

này.

Chúng ta có ba cách khác nhau để nhúng CSS vào trong một tài liệu HTML

+ Cách 1: Nội tuyến (kiểu thuộc tính)

Đây là một phương pháp nguyên thủy nhất để  nhúng CSS vào một tài liệu 

HTML  bằng  cách  nhúng vào từng  thẻ  HTML  muốn áp dụng.  Và  dĩ nhiên  trong 

trường hợp này chúng ta sẽ không cần selector trong cú pháp.

Lưu ý: Nếu bạn muốn áp dụng nhiều thuộc tính cho nhiều thẻ HTML khác nhau thì 

không nên dùng cách này.

Ở ví dụ sau chúng ta sẽ tiến hành định nền màu trắng cho trang và màu chữ xanh lá 

cho đoạn văn bản như sau:

<html>

<head>

<title>Ví dụ</title>

</head>

<body style=”background-color=#FFF;”>

<p style=”color:green”>^_^ Welcome To WallPearl’s Blog ^_^</p>

</body>

</html>

+ Cách 2: Bên trong (thẻ style)

Thật ra nếu nhìn kỹ  chúng ta cũng nhận ra đây chỉ  là một phương cách thay 

thế  cách thứ  nhất bằng cách rút tất cả  các thuộc tính CSS vào trong thẻ  style  (để

tiện cho công tác bảo trì, sửa chữa ấy mà).  

Trang 15

Simple CSS Standard Edition WallPearl

Cũng ví dụ làm trang web có màu nền trắng, đoạn văn bản chữ xanh lá, chúng ta sẽ

thể hiện như sau:

<html>

<head>

<title>Ví dụ</title>

<style type=”text/css”>

body { background-color:#FFF }

p { color:#00FF00 }

</style>

</head>

<body>

<p>^_^ Welcome To WallPearl’s Blog ^_^</p>

</body>

</html>

Lưu ý: Thẻ style nên đặt trong thẻ head.

Đối với những trình duyệt cũ, không thể  nhận ra thẻ  <style>. Theo mặc định, thì 

khi một trình duyệt không nhận ra một thẻ  thì nó sẽ  hiện ra phần nội dung  chứa 

trong thẻ. Như  ở ví dụ  trên, nếu trình duyệt không hỗ  trợ thẻ  style thì 2 dòng CSS: 

body {background-color:#FFF } p { color:#00FF00 } sẽ  hiện ra trên trình duyệt. 

Để  tránh tình trạng này, bạn nên đưa vào thêm  dấu <!--  ở  trước và  -->  ở  sau khối 

code CSS. Như ví dụ trên sẽ viết lại là:

<style type=”text/css”>

<!--  body { background-color:#FFF }

p { color:#00FF00 }  -->

</style> 

Trang 16

Simple CSS Standard Edition WallPearl

+ Cách 3: Bên ngoài (liên kết với một file CSS bên ngoài)

Tương tự  như cách 2 nhưng thay vì đặt tất cả  các mã CSS trong  thẻ  style 

chúng ta sẽ đưa chúng vào trong một file CSS (có phần mở rộng .css) bên ngoài và 

liên kết nó vào trang web bằng thuộc tính href trong thẻ link.

Đây là cách làm được khuyến cáo, nó đặc biệt hữu ích cho việc đồng bộ hay 

bảo trì một website lớn sử dụng cùng một kiểu mẫu. Các ví dụ trong sách này cũng 

được trình bày theo kiểu này.

Nào bây giờ chúng ta hãy mở Notepad lên và thử thực hiện theo ví dụ sau:

Đầu tiên chúng ta sẽ tạo ra một file vidu.html có nội dung như sau:

External 

CSS File

Web Pages

Chỉ  cần  thay  đổi  nội 

dung 1 file CSS, tất cả

các trang web sẽ  được 

cập nhật ngay lập tức 

Trang 17

Simple CSS Standard Edition WallPearl

<html>

<head>

<title>Ví dụ</title>

<link rel=”stylesheet” type=”text/css” href=”style.css” />

</head>

<body>

<p>^_^ Welcome To WallPearl’s Blog ^_^</p>

</body>

</html>

Sau đó hãy tạo một file style.css với nội dung:

body { 

background-color:#FFF

}

p { 

color:#00FF00

}

Hãy đặt 2 file này vào cùng một thư mục, mở  file vidu.html trong trình duyệt của 

bạn và xem thành quả.

Lưu ý: 

Để  lưu 1 file với 1 đuôi khác .txt trong Notepad chúng ta ch ọn Save as type 

là All Files. Có thể  chọn Encoding là UTF-8, nếu bạn chú thích CSS bằng tiếng 

Việt.

Trong CSS chúng ta còn có thể sử dụng thuộc tính @import để nhập một file 

CSS vào CSS hiện hành. Cú pháp: @import url(link)

Trang 18

Simple CSS Standard Edition WallPearl

2.4.  Sự ưu tiên:

Trước khi thực thi CSS cho một trang web. Trình duyệt sẽ  đọc toàn bộ  CSS 

mà trang web có thể  được áp dụng, bao gồm: CSS mặc định của trình duyệt, file 

CSS bên ngoài liên kết vào trang web, CSS  nhúng  trong thẻ  <style>  và các

Bạn đang đọc truyện trên: Truyen2U.Net