Xem mẫu

  1. Chương 4 BẢNG KIỂU XẾP CHỒNG I. GIỚI THIỆU VỀ CSS I.1 Lịch sử: Ngôn ngữ HTML hay các ngôn ngữ đánh dấu khác (markup language) dùng để trình bày, định dạng trang web đều có những hạn chế nhất định, bên cạnh đó các nhà sản xuất trình duyệt có những thẻ độc quyền, một trang web có thể có những thể hiện khác nhau trên các trình duyệt khác nhau, do vậy HTML đã phát triển đến phiên bản 4.01 và không bổ sung thêm; thay vào đó, với mục đích bảo vệ sự tính phổ cập của HTML, đồng thời vẫn cho phép các nhà thiết kế nhiều quyền điều chỉnh hơn đối với hình thức trang web, từ năm 1994 W3C (theo http:// www.w3.org/Style/) đã nghiên cứu thêm một số ngôn ngữ bổ trợ khác kết hợp với ngôn ngữ đánh dấu cho mục đích thể hiện trên trang web được thuận lợi, sinh động hơn. Các ngôn ngữ bổ trợ này là CSS (Cascading Style Sheets), XSL (eXtensible StyleSheets Language) v.v.. Thuật ngữ style sheet, có nghĩa là một khuôn mẫu (template) áp dụng cho một tư liệu HTML để quy định sự hiển thị tư liệu này như thế nào trong trình duyệt bằng cách ấn định giá trị cho vài thuộc tính tới tất cả các phần tử trong trang web cùng một lúc. Do vậy, sử dụng CSS cho phép người thiết kế tách biệt nội dung trang web và định dạng của nó. Các mức của CSS: - CSS level 1 (CSS1), xây dựng năm 1996, xác định các thuộc tính về định dạng văn bản trong trang web. - CSS level 2 (CSS2), xây dựng năm 1999, bao hàm CSS1 và các thuộc tính về định vị các đối tượng trong trang web. - CSS level 3 (CSS3), đang được xây dựng từ năm 2003 bao hàm CSS2 và các thuộc tính về multimedia. I.2. Những thuận lợi và trở ngại khi sử dụng CSS:  Thuận lợi: - Tiết kiệm thời gian trong việc định dạng hoặc hiệu chỉnh định dạng trang web do đặc tính ấn định giá trị cho vài thuộc tính tới tất cả các phần tử trong trang web cùng một lúc và tính chất tách biệt nội dung và định dạng. - Kiểu dáng dễ dàng thay đổi, thay vì thay đổi các thuộc tính các thẻ một cách thủ công tại nhiều nơi trong tư liệu HTML thì chúng ta chỉ thay đổi ở một nơi duy nhất là phần định dạng bằng CSS (bằng cách nhúng hay liên kết, sẽ trình bày ở các phần sau) 42
  2. - Cho phép tạo một số hiệu ứng mà HTML không làm được, ta có thể sử dụng CSS với JavaScript để tạo nên những hiệu ứng động trên trang web (mà IE gọi là DHTML). - Sử dụng CSS cho phép người sử dụng tải trang web nhanh hơn trong trường hợp dùng bảng kiểu liên kết, do tệp tin CSS đã được tải nên trong các trang web tải lần sau trong cùng một website trình duyệt chỉ cần tải phần nội dung.  Trở ngại: - Không phải tất cả trình duyệt nào cũng hỗ trợ đầy đủ CSS, theo W3C thì trình duyệt Opera hỗ trợ CSS tốt nhất. - CSS luôn luôn được cập nhật, do vậy người thiết kế Web phải dành nhiều thời gian để cập nhật, nghiên cứu mới có thể sử dụng tốt. II. CÚ PHÁP CSS II.1. Sử dụng CSS trong tư liệu HTML Một kiểu dáng (style) là một quy tắc, hoặc một lệnh, chỉ thị cho trình duyệt làm sao để trình bày một phần tử HTML riêng biệt. Những kiểu có thể đứng một mình hoặc có thể được tổ chức trong những bảng kiểu (stylesheets). Một kiểu dáng được tạo nên bởi một tên thẻ và một hoặc nhiều định nghĩa kiểu (hay khai báo kiểu) xác định phương thức mà các phần tử HTML sẽ được hiển thị. Một định nghĩa gồm một thuộc tính, một dấu hai chấm và một hoặc nhiều giá trị. Thuộc tính và giá trị này được quy định bởi W3C trong các đặc tả về CSS. II.1.1. Kiểu tại chỗ (Inline Styles) Kiểu tại chỗ (hay cục bộ) được áp dụng cho một thẻ riêng biệt trên trang web, ta có thể áp dụng kiểu tại chỗ cho bất kỳ thẻ nào trên trang web bằng cách dùng thuộc tính STYLE, thuộc tính này chỉ ảnh hưởng đến thẻ chứa đựng nó mà thôi. Cú pháp: Ví dụ : CSS, thuộc tính STYLE
  3. - Dùng kiểu tại chỗ để mở rộng khả năng định dạng của một thẻ HTML. Trong ví dụ trên, thẻ có "thêm khả năng" định dạng về font, cở chữ và màu sắc. - Tên thuộc tính và giá trị của thuộc tính trong định nghĩa kiểu có thể khác với tên thuộc tính và giá trị của một thẻ HTML. - Tiêu đề 1 và Tiêu đề 2 cùng được định dạng bởi thẻ , nhưng hiển thị khác nhau trên trình duyệt, do sự quy định bởi kiểu đã khai báo. - Ta có thể gộp các giá trị của thuộc tính font trong định nghĩa kiểu như sau: Tiêu đề 1 Thuộc tính : Các giá trị của thuộc tính. II.1.2. Bảng kiểu (StyleSheets) Một bảng kiểu bao gồm một hoặc nhiều định nghĩa kiểu. Bảng kiểu có thể được chứa trong tệp tin tư liệu HTML hay được lưu giữ trong một tệp tin bên ngoài tệp tin tư liệu HTML . Một định nghĩa cho một kiểu bao gồm một selector (bộ chọn), tiếp theo sau là khối khai báo kiểu theo cú pháp sau: SELECTOR { khai báo kiểu1; khai báo kiểu2;... } Ví dụ : BODY{font-family:"Arial"; font-size:"12pt"; color:"navy"} Selector là một chuổi ký tự xác định khai báo kiểu áp dụng trên một phần tử HTML, selector là một đề mục mà kiểu sẽ được áp dụng. Các selector có thể là : Tên một thẻ HTML, đây là trường hợp được sử dụng nhiều nhất, Lớp (class), Id, Giả lớp (pseudo-class). Để kích họat những định nghĩa kiểu, ta phải kèm theo chúng như là một phần của bảng kiểu toàn cục hoặc bảng kiểu liên kết.  Bảng kiểu toàn cục (hay bảng kiểu được nhúng vào, bảng kiểu bên trong) được kèm theo như là một phần của tệp tin tư liệu HTML. Loại bảng kiểu này được xác định biên giới của nó trong tệp tin tư liệu HTML bằng cặp thẻ và , được đặt trong phần đầu của tệp tin tư liệu HTML. Cú pháp một định nghĩa kiểu trong bảng kiểu :SELECTOR{ khai báo kiểu } Ví dụ : Bảng kiểu toàn cục body{background-color:"#F3F3F3"; color:"navy"; font:"12pt 'Times New Roman'"; margin-top:10pt; margin-left:10pt} div{font:"italic 12pt"} p{ text-align:"justify"; text-indent:"8pt"; font:"11pt" "Arial", "Verdana"} H3,H4{font-family:"Verdana"; color:"blue"; background:"silver"} 44
  4.  rel : mối quan hệ của tài liệu liên kết tới tài liệu hiện thời (tệp HTML), trong trường hợp này thì tài liệu liên kết chính là tệp css.  type:kiểu tư liệu MIME (Multipart Internet Mail Extension) của tư liệu được liên kết, trong trường hợp này là tệp css. Giả sử ta có tệp tin CSS có tên styles.css, được chứa trong cùng thư mục với tệp tin tư liệu HTML sau đây, và ta sử dụng bảng kiểu liên kết cho trang web này với khai báo như sau: Bảng kiểu liên kết Chú ý rằng, nếu ta tổ chức website bởi nhiều thư mục thì giá trị của thuộc tính HREF của thẻ nên là một địa chỉ tương đối. Riêng đối với trình duyệt IE, ta có thể sử dụng lệnh @import để tạo một liên kết đến một bảng kiểu. Cú pháp: @import:url(pathname) Ví dụ 1: Ví dụ 2: --> Nhận xét : Ta có thể áp dụng nhiều bảng kiểu cho một tư liệu HTML, do đặc tính đó nên gọi là bảng kiểu xếp chồng. Tuy nhiên, để giải quyết xung đột giữa các bảng kiểu, trình duyệt sẽ quyết định quyền ưu tiên cho các bảng kiểu đó mà ta sẽ nghiên cứu ở phần sau. II.2.Xếp chồng và Kế thừa II.2.1. Xếp chồng (Cascading) Cascading Style Sheets có tên như vậy do cách nó thiết lập quyền ưu tiên cho những định nghĩa kiểu áp dụng trên những phần tử của trang web. Để hiểu về quyền ưu tiên này, ta xem xét mối quan hệ giữa các thẻ HTML qua sơ đồ bên cạnh. Có những phần tử HTML chứa phần tử khác (đối tượng con), ví dụ phần tử là phần tử lớn 46
  5. nhất, phần tử , được chứa trong phần tử v.v.. Các quyền ưu tiên dựa trên các nguyên tắc: - Thứ tự ưu tiên lần lượt cho các kiểu : tại chỗ, toàn cục, liên kết - Những kiểu dáng được áp dụng lần cuối ưu tiên hơn những kiểu áp dụng trước đó. Nếu muốn tăng độ ưu tiên cho một định nghĩa kiểu đặt biệt, cần thêm khai báo important sau giá trị của thuộc tính cần ưu tiên, như sau: H3{color : red!important; font-family:arial} (chú ý dấu ! nằm giữa giá trị của thuộc tính và từ important) II.2.2. Kế thừa (Inheritance) Căn cứ mối quan hệ phân cấp giữa các thẻ HTML được xét trong bối cảnh sử dụng trong một tư liệu HTML, các phần tử con sẽ thừa hưởng tất cả các thuộc tính của phần tử con, còn những thuộc tính riêng của phần tử con vẫn được giữ nguyên hoặc phủ chồng lên thuộc tính cùng tên của phần tử cha. Ví dụ : Kế thừa body{ color:blue; margin-left:20pt} p{ font: normal 12pt 'Times New Roman'; text-align:justify; color:navy} b{ font: bold 14pt Arial} Trong các kiểu động hỗ trợ cơ chế kế thừa , các phần tử con trong một tư liệu HTML kế thừa tất cả các thuộc tính của phần tử cha Trong ngữ cảnh sử dụng trên, ta có mối quan hệ cha con giữa các phần tử HTML như sau: ⊃ ⊃ Các kiểu động được cài đặt trong IE, được hưởng cơ chế kế thừa, theo đó định dạng cho phần tử bên ngoài (phần tử cha) được dùng làm cơ sở cho việc định dạng phần tử bên trong (phần tử con) 47
  6. II.3. Kiểu động Trong IE, những kiểu thực sự có khả năng động nên ta có thể dùng kịch bản (script) để thay đổi kiểu bất kỳ khi nào. Hiện nay, từ phiên bản NN 7.2 đã hỗ trợ nhiều kiểu động, tuy không hỗ trợ định vị động. Đọan mã sau minh họa kiểu tại chỗ có thể thay đổi và chạy tốt trong cả hai trình duyệt IE và NN. Kiểu động Click me! Khi người sử dụng di chuyển con trỏ đến (sự kiện onMouseOver) đối tượng Click me! Thì dòng văn bản này đổi màu đỏ, khi con trỏ di chuyển rời khỏi (sự kiện onMouseOut) đối tượng thì dòng văn bản này đổi trở lại màu xanh. Ta sẽ nghiên cứu các sự kiện này trong chương 6, "Mô hình đối tượng trình duyệt". II.4. Lớp (Class) Lớp là một dạng selector đặt biệt, là tập hợp nhiều định nghĩa CSS và không gán cho bất kỳ thẻ nào, khi dùng mới tác dụng lên thẻ HTML nào gọi đến nó. Có các kiểu lớp :  Lớp phổ dụng (regular class) là một bộ chọn lớp chỉ làm việc với lớp và phần tử HTML được xác định rõ. Lớp phổ dụng có dạng: TênSelector.TênLớp{ khai báo kiểu} Ví dụ : Lớp phổ dụng B.large{font-size: 22pt} B.small{font-size: 14 pt} This uses the small class This uses the large class Nhận xét: 48
  7. Dòng thứ nhất, chỉ chịu tác dụng của thẻ , không có khai báo kiểu. Dòng thứ hai, chịu tác dụng của khai báo kiểu trong lớp "small" với font- size: 14pt; tương tự dòng thứ ba, chịu tác dụng khai báo kiểu trong lớp "large" với font-size 18pt. Lớp phổ dụng chỉ áp dụng cho một phần tử HTML xác định, trong ví dụ trên các lớp small, large chỉ áp dụng cho phần tử mà thôi.  Lớp chung (generic class) Ta có thể tạo một lớp chung mà mọi phần tử HTML có thể sử dụng trong trường hợp ta không xác định thẻ cụ thể cho selector. Lớp chung có dạng: .TênLớp{Khai báo kiểu} Ví dụ: Lớp chung .large{font-size: 22pt} .small{font-size: 14 pt} The small class on an H2 element The large class on a DIV element The small class on a P element The large class on a B element Nhận xét : lớp small được áp dụng cho các phần tử khác nhau: , ; tương tự cho lớp large, nhưng hai lớp này không thể áp dụng cho phần tử vì phần tử này không có thuộc tính font-size.  Lớp giả (pseudo class) W3C đã xây dựng nhiều kiểu lớp giả, tuy nhiên hiện nay các trình duyệt (IE 6.0, NN 7.2, FireFox 1.0.4) chỉ mới hỗ trợ lớp giả cho thẻ . Các lớp giả này có dạng: A:TênLớpGiả hoặc A.TênLớp:TênLớpGiả Có 4 lớp giả của liên kết: link, hover, visited và active tương ứng với 4 trạng thái khi người sử dụng tác động chuột lên liên kết. Ví dụ 1: Lớp giả body{font:11pt normal arial} A:link{font: 11pt normal arial; color:navy; text-decoration:none} 49
  8. A:visited{color:magenta;text-decoration:none} A:hover{font: bold 11pt arial;color:green;text-decoration:underline} A:active{color:blue;text-decoration:none} /* Chú ý phải khai báo đúng trật tự trên */ msdn.microsoft.com www.w3.org/style www.w3school.org Ví dụ 2: Trong ví dụ trên ta xây dựng bốn lớp giả cho thẻ , áp dụng cho toàn bộ các liên kết, tuy nhiên để có những định dạng khác nhau cho các nhóm liên kết khác nhau, ta phải sử dụng lớp giả của lớp với khuôn dạng: A.TênLớp:TênLớpGiả Multi Pseudo-Class body{font:11pt normal arial; margin-left=22pt} /* Nhung website nuoc ngoai*/ A.ext:link{font: normal 11pt arial; color:navy; text-decoration:none} A.ext:visited{color:red;text-decoration:none} A.ext:hover{font: bold 11pt arial;color:green;text-decoration:underline} A.ext:active{color:blue;text-decoration:none} /* Nhung website trong nuoc */ A.int:link{font: normal 12pt 'Times New Roman'; color:blue; text-decoration:none} A.int:visited{font: normal 12pt 'Times New Roman';color:maron; text-decoration:none} A.int:hover{font: bold 12pt 'Times New Roman';color:green; text-decoration:underline} A.int:active{font: normal 12pt 'Times New Roman';color:navy; text-decoration:none} msdn.microsoft.com www.w3.org/style/ www.w3school.org 50
  9. Báo Tuổi trẻ tp Hồ Chí Minh Báo Thanh Niên Báo Người lao động II.5. ID (ID Selector) Thay vì tạo một lớp chung cho các thẻ HTML, ta có thể chỉ định từng thẻ riêng biệt và sau đó áp dụng bảng kiểu hoặc các chức năng của ngôn ngữ kịch bản JavaScript cho chúng. Mỗi thuộc tính ID trong tư liệu HTML phải là duy nhất. Sự khác biệt giữa ID và Class bản chất ở chỗ class có thể áp dụng cho nhiều phần tử HTML, còn ID chỉ có thể áp dụng cho một phần tử duy nhất trong tư liệu HTML mà thôi. Thuộc tính ID được dùng rộng rãi trong việc định vị một đối tượng trong trang web hoặc dùng mã kịch bản để thay đổi vị trí một đối tượng trong trang web. Cú pháp : ID selector đơn : #tênID{khai báo kiểu} ID selector này sẽ áp dụng chỉ cho 1 phần tử HTML nào đó trong tư liệu HTML ID selector : tênThẻ# tênID{khai báo kiểu} ID selector này sẽ áp dụng chỉ cho 1 thẻ xác định trong tư liệu HTML Ví dụ 1: ID Selector H1{font: normal 20pt Verdana; color: yellow; background: green; text-align:center; letter-spacing:.5em} P{text-align:justify; text-indent: 10pt; font: 10pt/15pt Arial} P.intro EM{font-style: normal} P#intro{ text-indent:0; font: italic bold} #note{ text-align: right; font-style: italic} 51
  10. Cái vô hạn trong lòng bàn tay, là cuốn sách của nhà khoa học Trịnh Xuân Thuận và thiền sư Matthieu Ricard CÁI VÔ HẠN TRONG LÒNG BÀN TAY Không có trí thức được nuôi dưỡng bằng lòng vị tha thì khoa học và chính trị sẽ trở thành những con dao hai lưỡi, đạo đức trở nên mù quáng, nghệ thuật phù phiếm, xúc cảm hoang dã và tâm linh viễn vông Tia sáng, 4-2005 Tạp chí của Bộ Khoa học và Công nghệ Nhận xét: Về mặt chức năng định dạng, thì ID và class không có gì khác nhau. Ở ví dụ trên ID note được sử dụng cho hai thẻ và ở cuối tư liệu HTML, tuy nhiên để truy cập đến một đối tượng trên trang web thì cách sử dụng trên là hoàn toàn không đúng. Chúng ta sẽ nghiên cứu cách dùng ID để định vị các đối tượng trên trang web trong các chương sau. II.6. Tạo thẻ HTML tùy biến HTML 4 có hai loại thẻ đồng nhất có thể kết hợp với class và ID để tạo các thẻ HTML tùy biến Các phần tử cấp độ khối thường bắt đầu trên một dòng mới và có thể chứa các phần tử cấp độ khối khác, các phần tử nội tuyến và văn bản. Thẻ là một phần tử cấp độ khối. Ngược lại, các phần tử nội tuyến (inline) thường không bắt đầu ở dòng mới và chỉ có thể chứa các phần tử nội tuyến khác hoặc văn bản. Các thẻ , hay là những phần tử nội tuyến. Trong HTML, các thẻ và nếu sử dụng mà không kết hợp với class và ID thì tính chất giống như thẻ , ngược lại kết hợp với class và ID tạo ra thẻ tùy biến đầy hiệu quả. Thẻ dùng cho các phần tử cấp độ khối, thẻ dùng cho các phần tử nội tuyến. Thẻ và cho phép tạo ra các kiểu dáng tùy biến mà không chịu ảnh hưởng bởi bất kỳ thẻ hiện hành nào, cũng như các kiểu dáng tương ứng chúng. 52
  11. II.6.1. Tạo thẻ cấp độ khối tùy biến Có thể bổ sung class hoặc ID cho thẻ để tạo thẻ HTML tùy biến cấp độ khối. Cú pháp như đã trình bày trong các phần class và ID đã nêu trên, ở đây ta nhấn mạnh đến cách sử dụng thẻ .  DIV.tênLớp{khai báo kiểu}  hoặc DIV#tênID{khai báo kiểu} Ví dụ : The HTML tuy bien body{font: normal 12pt 'Times New Roman'} DIV.intro{font-style: italic; text-align:justify; width:220; height:120; float:left;} DIV.content{font-style: normal; text-align: justify; width:240; height:120;position:relative;right:-20} P{text-align:justify; text-indent: 10pt; font: 10pt arial} P.intro{font-style: italic; text-indent:0pt} P.content{font: normal 10pt; text-align: justify; text-indent:12pt;margin-right:20pt} H3{background:maroon; color: white; font: bold 10pt verdana; text-align: center} Văn tế nghĩa sĩ Cần Giuộc, ngôi đền thiêng trong văn học Cụ Đồ Chiểu chỉ là một nhà thơ mù, một người hát rong của nhân dân, một số tác phẩm cụ để lại mà tiêu biểu nhất là Văn tế nghĩa sĩ Cần Giuộc đã làm giàu cho văn học Việt Nam ở vào thời điểm thử thách khắc nghiệt nhất cho văn học và cho lịch sử đất nước Chớ động vào ngôi đền thiêng do chính nhân dân dựng lên! Cụ Đồ Chiểu "thảo dân" và Văn tế nghĩa sĩ Cần Giuộc là ngôi đên thật, ngôi đền thiêng của văn học chúng ta. Hãy cẩn trọng khi chạm đến nó Thanh Niên, 137, 2005 53
  12. Nhận xét : Thẻ tạo ra một khối tương tự như một textbox trong Winword, bên trong có thể chứa các khối khác, văn bản ... Thuộc tính CSS quan trọng là : - width, height : chỉ kích thước của khối, tính bằng pixel hay pt. - position : xác định vị trí của khối là tương đối (relative) hay tuyệt đối (absolute) - float : xác định các đối tượng ngoài khối được trình bày bao quanh (wrapping) như thế nào. - left | right : xác định khoảng trống được thêm vào bên trái / bên phải của khối. Ta có thể sử dụng ID để có hiệu quả tương tự, tuy nhiên cần phải chú ý là thuộc tính ID phải duy nhất ! II.6.2. Tạo thẻ cấp độ nội tuyến tùy biến Có thể bổ sung class hoặc ID cho thẻ để tạo thẻ HTML nội tuyến tùy biến, thẻ này tương tự như một mẫu ký tự trong các trình sọan thảo văn bản hay dàn trang. Cú pháp:  SPAN.tênLớp{khai báo kiểu}  hoặc SPAN#tênID{khai báo kiểu} Ví dụ : Thẻ HTMM nội tuyến tùy biến /* Khai báo cáo kiểu dáng */ body{ font: normal 12pt 'Times New Roman'} span.initialCap{font:150% normal brussels ; color:blue; text-indent:12pt} span.allCap{font-variant: small-caps} N 54
  13. ếu học hành mà không phải sự khát khao, mà chỉ là sự bắt buộc để thi, thì sau khi thi xong, tất cả lại quên hết VNEXPRESS.NET, 2003 IV. SỬ DỤNG CSS Trong các phần trên ta đã nghiên cứu về cú pháp của bảng kiểu (CSS syntax), các cách cài đặt, trong phần này ta sẽ nghiên cứu các thuộc tính của CSS để áp dụng cho việc kiểm soát, định dạng các đối tượng trên trang web. Để nghiên cứu các thuộc tính của CSS2, có thể xem trong phụ lục số 2. IV.1. Đơn vị đo trong CSS Tên đơn Chữ viết Diễn giải vị tắ t Em em Chiều cao của một font chữ (*) Ex ex Chiều cao của ký tự x trong font chữ (*) Pica pc 1 pica = 12points Point pt 1/72 inch (1inch =2,54 cm) Pixel px Một điểm (dot) trên màn hình millimeter mm Đơn vị in ấn centimeter cm -nt- Inch in -nt- (*) đơn vị đo tương đối so với font chữ hiện thời IV.2. Định dạng văn bản với bảng kiểu Trong chương 2, 3 chúng ta đã nghiên cứu việc định dạng văn bản bằng các thẻ HTML, chúng có hạn chế là cần phải sử dụng nhiều mã định dạng. W3C đưa ra một giải pháp để giản lược các tag định dạng văn bản, danh sách, bảng... bằng CSS. IV.2.1. Các thuộc tính về font chữ font-family: xác định danh sách cách font chữ, nếu những tên font chữ có khoảng trống phải đặt vào trong cặp dấu nháy. Trình duyệt sẽ ưu tiên thể hiện bằng font chữ tìm thấy lần đầu tiên trong danh sách sự hiện diện font này trong máy tính của người sử dụng. Nếu không tìm thấy font chữ nào, trình duyệt sẽ chọn một trong các font sau: Times, Arial, Script, Ransom và Courier  font-style: kiểu dáng font chữ, có 3 giá trị : normal | italic | oblique  font-weight: độ đậm, nhạt của font chữ : có 14 giá trị : normal | bold | bolder | lighter | 100 | 200 | ... | 900. font-size: cở chữ, có các kiểu giá trị : cở tuyệt đối (đơn vị đo pt), cở  tương đối so với cở hiện tại (xx-small, x-small,, small, medium, large, x-large, xx- 55
  14. large) hay so sánh tương đối với phần tử cha (larger, smaller) , tỷ lệ % so với cở hiện hành.  font-variant: nhận một trong hai giá trị normal | small-caps, tức giữ nguyên như đã gõ vào hay tự động chuyển tất cả thành dạng small-cap.  font: thuộc tính gộp các thuộc tính về font chữ, nhất thiết phải khai báo các giá trị đúng trật tự sau (có thể vắng một thuộc tính) : style | weight | variant | size / line-height | font-family hoặc font-style | font-variant | font-weight | font-size | font-family Ví dụ : Thôn Vĩ Dạ .poem{font-variant:small-caps} .single{font: italic normal 11pt/16pt 'Times'} .multiple {font: italic normal 11pt/12pt 'Times'} đây thôn vĩ dạ Sao anh không về chơi thôn VĩNhìn nắng hàng cau nắng mới lên Vườn ai mát quá xanh như ngọc Lá trúc che ngang mặt chữ điền IV.2.2. Các thuộc tính về văn bản  text-decoration : nhận các giá trị none, underline, overline, line-through và blink (thuộc tính này chỉ tác dụng trong NN). text-align : xác định việc căn lề trong một paraph, thuộc tính này có các giá trị left, center, right và justify.  text-indent : xác định khoảng thụt đầu dòng của một paragraph, tính bằng pt (point) hay px (pixel)  line-hight : xác định kích thước tổng thể của dòng văn bản, bao gồm khoảng trống phía trên và phía dưới, do vậy thuộc tính này ảnh hưởng tới khoảng cách giữa các dòng.  letter-spacing : xác định khoảng cách giữa các ký tự.  text-transform : kiểm soát việc viết hoa của văn bản, (phân biệt thuộc tính này với thuộc tính font-variant), các giá trị của thuộc tính này: none, capitalize, uppercase và lowercase. 56
  15. IV.2.3. Thuộc tính về màu chữ color :xác định màu chữ, có các kiểu giá trị : tên màu (red, blue,...), giá trị hexa (ví dụ #FF0000 tương ứng màu đỏ), bộ ba giá trị RGB ( ví dụ RGB(192, 192, 192)  xác định màu xám)  hay bộ ba giá trị HSL (viết tắt của Hue Saturation Lightness, ví dụ HSL(0deg, 100%, 50%) xác định màu đỏ). IV.3. Định dạng phần tử theo kiểu dáng Một đối tượng do người sử dụng tạo ra với bảng kiểu được đóng khung trong trong một vùng định dạng (tương tự như TextBox trong Winword), hay còn được gọi là một hộp vô hình. Vùng định dạng này có các thuộc tính : Nền (background) nằm phía sau phần tử Lề (margin) nằm xung quanh đường biên của đối tượng để phân cách với các đối tượng khác. Vùng đệm (padding) phân cách phần tử với đường biên (border) của nó Các thuộc tính margin, padding và border áp dụng để định dạng table cho hiệu quả tốt. Sơ đồ bên cạnh mô ta cấu trúc của vùng định dạng . IV.3.1. Các thuộc tính chung về Box Có bốn thuộc tính chung về vùng định dạng : height, width, float và clear  height, width : xác định kích thước của vùng định dạng  float : xác định cách dàn văn bản, các phần tử khác xung quanh phần tử xác định, có hai giá trị left | right , nếu muốn phần tử nằm bên trái /phải trang web và văn bản dàn bên phải / trái phần tử đó.  clear: xác định cách dừng việc dàn văn bản xung quanh phần tử, có các giá trị : - left | right: dừng dàn văn bản cho đến khi cạnh trái/phải không còn phần tử nào. - both : dừng dàn văn bản cho đến khi cả hai cạnh không còn phần tử nào. - none : tiếp tục dàn văn bản IV.3.2. Các thuộc tính nền background: là một thuộc tính gộp xác định thuộc tính nền của trang web, khối hay một ký tự. Các thuộc tính riêng và giá trị của chúng (khi khai báo gộp cần đúng theo thứ thự : color, image, repeat, attachment và position) * background-color: Chọn một trong 16 tên màu như white, black, blue,... hay giá trị RGB 57
  16. * background-image: có 2 giá trị none, nếu muốn loại bỏ bất kỳ hình ảnh nào đã thiết lập trước đó; URL(image.gif) để dùng một hình ảnh làm nền, khi sử dụng giá trị này cần khai báo thuộc tính background-repeat * background-repeat : gồm các giá trị repeat: lặp lại hình ảnh theo cả chiều dọc lẫn chiều ngang repeat-x / repeat-y: lặp lại hình ảnh theo chiều ngang / dọc no-repeat : không lặp lại hình ảnh * background-attachment: chỉ sử dụng trên phần tử BODY, có hai giá trị là scroll / fixed : để định nền có cuộn theo ảnh hay không * background-position : để xác định tọa độ ảnh làm nền, có thể chọn x, y (tính bằng pixel, point hay tỷ lệ %) hay top, center, bottom thay cho x và left, center, right thay cho y Lưu ý : thuộc tính background có thể áp dụng cho thẻ , các thẻ cấp độ khối. IV.3.3. Các thuộc tính lề và phần đệm  Các thuộc tính về việc xác định lề của một phần tử : margin là thuộc tính gộp của bốn thuộc tính, margin-top, margin-right, margin-bottom, margin-left . Lưu ý : thuộc tính margin có tính tương đối, phụ thuộc vào thuộc tính position mà ta sẽ nghiên cứu ở dưới. Cách sử dụng: Xác định lề trên, phải, dưới, trái của một phần tử cùng bằng một giá trị margin : npt hoặc giá trị khác nhau : margin : n1pt n2pt n3pt n4pt.  Các thuộc tính về việc xác định khoảng trắng giữa đường biên và phần tử: padding là thuộc tính gộp của 4 thuộc tính padding-top, padding-right, padding-bottom, padding-left. Cách sử dụng như thuộc tính margin IV.3.4. Các thuộc tính về đường biên  border-width : xác định độ rộng của đường viên, có thể nhận các giá trị thin, medium, thick hay những đơn vị do chuẩn như px, em và pc  border-style : xác định kiểu đường biên, có thể nhận các giá trị none, solid, double, groove, ridge, inset và outset.  border-color : xác định màu cho 4 cạnh của đường biên Ta có gộp nhóm các thuộc tính đường biên bằng thuộc tính border, nhưng khi khai báo giá trị cần phải theo thứ tự trên.Các thuộc tính cho từng đường biên border-top, border-bottom, border-left và border-right chỉ được IE hỗ trợ. Ví dụ : Hình bên cạnh là một phần trang web của VnExpress.net. Để trình bày như vậy ta có đọan mã như sau: 58
  17. Ô tô, xem máy body{font: normal 11pt 'Times New Roman'; color: black} .box {background-color: #F7F7F7; border: 3px solid blue; font: bold 10pt arial; color: #008080 ; padding: 10px; float: left; align: justify} .note{ font: normal 10pt arial; color: silver} .emph{font-style:underline; color: black} a.link{color: #008080} Theo dòng sự kiện Lịch sử các nhãn hiệu xe 01/03 IV.4. Trình bày trang theo bảng kiểu IV.4.1. Định vị hai chiều Định vị hai chiều là một phần trong đặc tả CSS2, các thuộc tính xác định vị trí một phần tử trong trang web : position, top và left  position : nhận hai giá trị absolute | relative, xác định các giá trị của các thuộc tính top | left là tuyệt đối hay tương đối.  top | left: xác định khoảng cách từ đỉnh / cạnh trái của phần tử đến một điểm gốc. Điểm gốc này phụ thuộc vào giá trị của thuộc tính position. Giá trị của thuộc tính này tính bằng các độ đo chuẩn. Nếu position:absolute thì điểm gốc là lề trên và lề trái của trang web Ngược lại, điểm gốc có thể là các lề của trang web hay phần tử khác đứng bên trên / bên trái của phần tử được xác định vị trí. Ví dụ : Dinh vi 2 chieu 59
  18. body{font: normal 11pt arial} .sp1{background-color:silver; position:absolute; top: 2px; left:10px} .sp2{background-color:lightgrey; position:absolute; top:15%; left: 5%; width: 50%} .sp3{background-color:red; position:relative; top:3px} .sp4{background-color:cyan; position:absolute; top:75px; left: 25px; width:50%} SPAN 1 has position set to absolute SPAN 2 has position set to absolute. The following word relativeis in Span 3,which has position set to relative Span 4 is contained by Span 2 and has position set to absolute This is the lasted in Span 2 IV.4.2. Định vị theo chiều thứ 3 Để có thể định vị hai phần tử trên cùng một điểm trên trang web, ta dùng thuộc tính z-index. Giá trị của thuộc tính này là một số nguyên, phần tử nào có giá trị nhỏ hơn sẽ nằm phía sau (behind), phần tử có giá trị lớn hơn sẽ nằm phía trước (in front). Ví dụ : Z-INDEX .body{background-color:lightgrey; color: blue} .img1{position:absolute; top:20px; left:150px; z-index:1;width:120; height:90} .img2{position:absolute; top:20px; left:330px; z-index:-1;width:120; height:90;border:1px solid navy} 60
  19. .sp{position:absolute; top:40px; left:60px; z-index:0;font: normal bold 11pt} This SPAN has a z-index value between those of the two images IV.5. Định dạng những phần tử khác của trình duyệt IV.5.1. Thuộc tính display và visibility Trong các phần trên ta đã nghiên cứu cách kiểm soát vị trí một phần tử trên trang web cũng như vị trí giữa các phần tử. Các thuộc tính display và visibility cho phép ta kiểm soát phần tử có xuất hiện trên trang web không. Tuy nhiên có sự khác biệt giữa hai thuộc tính này.  display : xác định phần tử xuất hiện như thế nào hay không xuất hiện. Các giá trị của thuộc tính này :none (không xuất hiện); các giá trị sau là tương đương và làm xuất hiện phần tử: inline, block, list-item.  visibility : xác định phần tử có được nhìn thấy trên trang web không. Các giá trị của thuộc tính này: visible, hidden và collapse. Nếu display:none thì đối tượng không xuất hiện trên trang web và vùng không gian của nó chiếm chỗ được giải phóng; khác với visibility:hidden thì đối tượng không nhìn thấy trên trang web nhưng vùng không gian của nó vẫn còn nguyên. Nhiều website sử dụng tính chất này để xây dựng các menu có khả năng bung ra / thu gọn. IV.5.2. Hiển thị từng phần Để kiểm soát nội dung bên trong vùng định vị có vừa vẹn với kích thước của vùng định vị , ta dùng các thuộc tính overflow, thuộc tính này có các giá trị:  hidden : nếu muốn khung của vùng định vị cắt bỏ phần ngoài khung, không thể xem được.  visible : nếu muốn tất cả nội dung của phần tử được thể hiện tất cả. 61
nguon tai.lieu . vn