CSS (1) - Tổng quan

Bài trước: Câu hỏi trắc nghiệm HTML

----- 




Lời nói đầu

Sau khi học xong cuốn sách đầu tiên, TỰ HỌC LÀM WEB, Tập 1 – HTML căn bản, chúng ta đã có được các kiến thức và kĩ năng về con đường nghề nghiệp, về nghề làm web, về cách học, về khả năng sử dụng tiếng Anh. Đặc biệt, chúng ta đã có thể làm được các dự án nhỏ, trong đó chỉ sử dụng HTML để tạo ra một website; biết đưa trang web lên Internet để mọi người có thể truy cập.

Trong quá trình làm web, HTML có một số vai trò sau:

– Hiển thị tất cả các loại nội dung của trang web, ví dụ: văn bản, hình ảnh, âm thanh, bản đồ

– Tạo ra ngữ nghĩa cho các thành phần trong tài liệu HTML, nó giúp tài liệu HTML có cấu trúc rõ ràng, đúng đặc tả của HTML; từ đó, giúp lập trình viên làm việc dễ hơn; giúp các phần mềm có thể đọc hiểu được mã HTML, giúp các cỗ máy tìm kiếm có thể làm việc hiệu quả; tăng khả năng lập trình với mã HTML.

– Thông qua form của HTML, chúng ta có thể thu thập thông tin từ người dùng; gửi dữ liệu từ client về server

Như vậy, với HTML, chúng ta đã tạo ra được nội dung cho trang web. Tuy nhiên, bạn sẽ thấy, nội dung trang web được hiển thị một cách tuần tự, từ trên xuống dưới, đoạn mã nào viết trước thì được hiển thị trước. Trang web không được chia cột, không có màu sắc bắt mắt, không có hiệu ứng. Nói chung là khá đơn điệu, nhàm chán.

Để bố trí trang web cho chuyên nghiệp về bố cục, có màu sắc bắt mắt, có các hiệu ứng ấn tượng thì chúng ta phải học và tìm hiểu về CSS.

Đây là cuốn sách thứ hai, TỰ HỌC LÀM WEB, Tập 2 – CSS căn bản, trong loạt các cuốn sách về tự học làm web.

Sách được viết theo kiểu tự học, với mỗi chủ đề luôn bắt đầu là các kiến thức căn bản, các khái niệm, các thực hành minh họa; sau đó là các nguồn tài liệu tham khảo để bạn đọc và xem thêm; tiếp theo là các bài tập và thực hành; sau cùng là câu hỏi ôn tập.

Trong sách cũng có các tài liệu tham khảo, câu hỏi, bài tập, bài thực hành bằng tiếng Anh, để giúp người học trải nghiệm, từng bước nâng cao khả năng sử dụng tiếng Anh. Bạn có thể sử dụng danh mục các từ tiếng Anh chuyên ngành tại đây: https://bit.ly/3iLYpgG.

Phần kết thúc sẽ là hướng dẫn làm một số dự án.

Nội dung của cuốn sách này:

– Tổng quan về CSS

– CSS cho văn bản

– Làm việc với phông chữ

– Màu sắc

– Định dạng nền

– Bố cục trang web

– Các chủ đề mở rộng

– Tập làm dự án

Cuốn sách tiếp theo bạn nên có là TỰ HỌC LÀM WEB, Tập 3 – JavaScript căn bản.

Dù đã cố gắng, nhưng tài liệu này chắc chắn còn hạn chế về kiến thức, kĩ năng, nhận định. Mong bạn luôn đọc trong tâm thế hoài nghi.

1         Tổng quan về CSS

Trong phần này, chúng ta sẽ tìm hiểu về:

– CSS là gì?

– Sự kế thừa

– Kĩ thuật xếp lớp

– Định chuẩn CSS

– Box model

– Đơn vị đo trong CSS

1.1       CSS là gì?

CSS là viết tắt của 3 từ tiếng Anh: Cascading Style Sheets, dịch sát nghĩa là mã định dạng theo kĩ thuật xếp lớp. Chúng ta sẽ tìm hiểu về kĩ thuật xếp lớp (cascade) ở các phần sau.

CSS là một ngôn ngữ định kiểu, được sử dụng để mô tả kiểu hiển thị (presentation) cho các phần tử trong tài liệu HTML hoặc XML. CSS chỉ dẫn một phần tử HTML sẽ được hiển thị như thế nào trên màn hình, trên giấy hoặc các phương tiện hiển thị khác.

Tổ chức W3C quản lý và đưa ra các đặc tả cho CSS.

Học CSS là học cú pháp của nó; học cách tìm và định dạng các phần tử HTML, để chúng ta có được trang web với cách bố trí, hiển thị, màu sắc, các hiệu ứng theo ý muốn.

Lưu ý, từ CSS có khi được sử dụng như là một động từ, ví dụ “bạn hãy CSS cái hình đó đi”. Có khi lại được sử dụng như một danh từ, ví dụ “dùng CSS để định dạng cái hình đó”.

Hiểu đơn giản, chúng ta dùng HTML để tạo ra phần thô của một căn nhà, sau đó dùng CSS để sơn và trang trí cho ngôi nhà.

Để dễ hiểu, chúng ta sẽ cùng thực hành với CSS.

Muốn thực hành với CSS, chúng ta chỉ cần một phần mềm viết mã đơn giản (ví dụ Notepad hoặc VS Code) và trình duyệt để hiển thị kết quả. Như trong phần tìm hiểu về trình duyệt web, khi nhận được mã HTML và CSS, Rendering engine (Gecko, Webkit hoặc Blink) sẽ phân tích mã HTML, CSS và hiển thị nội dung của trang web ra màn hình.

Để CSS cho trang web, chúng ta cần thực hiện ba bước sau:

– Có sẵn tài liệu HTML, nếu chưa có thì chúng ta cần tạo ra tài liệu HTML

– Viết các chỉ dẫn định dạng (style rule, gọi tắt là chỉ dẫn) để mô tả cách thức hiển thị cho các phần tử HTML, bạn muốn phần tử sẽ hiển thị ra trình duyệt như thế nào thì mô tả trong các chỉ dẫn. Ví dụ mô tả về màu sắc, kích thước, vị trí của phần tử.

– Gắn, hay áp các chỉ dẫn vào tài liệu HTML. Khi trình duyệt hiển thị trang web, nó sẽ dựa vào các chỉ dẫn để định dạng các phần tử HTML.

Chúng ta sẽ thực hành từng bước.

Bước 1. Viết tài liệu HTML

[index.html]

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

    <p>Cu Teo hoc CSS</p>

</body>

</html>

Vậy là chúng ta đã có phần tử HTML là <p>. Xem kết quả trên trình duyệt sẽ thấy dòng chữ Cu Teo hoc CSS có màu đen, cỡ chữ bình thường.

Bước 2. Viết các chỉ dẫn

Chúng ta muốn dòng chữ có màu đỏ và cỡ chữ lớn hơn? Hãy viết chỉ dẫn sau, lưu lại tập tin mã nguồn và xem kết quả      :

…   

    <title>Document</title>

    <style>

        p {

            color: red;

            font-size: 54px;

        }

    </style>

</head>

Chúng ta cùng xem xét chỉ dẫn sau:

p {  

      color: red;

      font-size: 54px;

}

Một chỉ dẫn gồm hai phần là Bộ chọn và Khai báo.

– Bộ chọn (selector): xác định phần tử hoặc nhóm phần tử sẽ được định dạng

– Khai báo (declaration): cho biết các phần tử sẽ được định dạng như thế nào

Như ở ví dụ trên, p là bộ chọn, { color: red; font-size: 54px; } là khai báo.

Phần khai báo:

– Được giới hạn bằng cặp ngoặc nhọn ({})

– Bên trong ngoặc nhọn là các cặp thuộc tính: giá trị (property: value)

– Giữa thuộc tínhgiá trị có một dấu hai chấm (:) và một khoảng trắng

– Cuối mỗi cặp thuộc tính: giá trị là dấu chấm phẩy (;)

Xem hình minh họa,


Bộ chọn

Trong đoạn mã CSS ở ví dụ trên, bộ chọn là phần tử p. Đây được gọi là bộ chọn dựa theo loại phần tử (element type), là kiểu bộ chọn cơ bản nhất. Nội dung trong phần khai báo của mỗi chỉ dẫn sẽ tác động lên tất cả các phần tử p trong tài liệu HTML. Ở phần sau sẽ tìm hiểu thêm các bộ chọn phức tạp hơn. Trong CSS, việc xác định đúng bộ chọn và sử dụng bộ chọn một cách hợp lý là một kĩ năng quan trọng cần để ý.

Khai báo

Ở phần trên đã mô tả chi tiết cú pháp của một khai báo. Vì CSS không quan tâm tới các khoảng trắng và dấu xuống hàng dư thừa, vì vậy với khai báo gồm nhiều cặp “thuộc tính: giá trị” thì nên viết mỗi cặp trên một hàng để dễ quan sát mã nguồn.

Viết chỉ dẫn trên một hàng, không có khoảng trắng, chương trình chạy vẫn đúng, nhưng rất khó quan sát mã nguồn, ví dụ:

p{color:red;font-size:54px;}

Chúng ta nên viết theo cách sau:

p {

color: red;

font-size: 54px;

}

Thuộc tính

Thuộc tính (property) chính là tất cả các yếu tố liên quan đến việc định dạng một phần tử HTML, ví dụ màu chữ, màu nền, kích thước phông chữ, vị trí hiển thị…v.v. Tên các thuộc tính được quy định sẵn trong đặc tả của CSS. Chúng ta cần phải học để biết ý nghĩa của mỗi thuộc tính đối với mỗi phần tử HTML. Ví dụ: thuộc tính color dùng để thiết lập màu của chữ, thuộc tính font-size dùng để thiết lập kích cỡ của chữ.  

Giá trị

Với mỗi thuộc tính sẽ có các giá trị tương ứng đi kèm. Ví dụ thuộc tính color sẽ có các giá trị là tên của các màu (ví dụ red, green, blue), thuộc tính font-size sẽ có giá trị là kích thước của chữ được tính bằng px. Điều quan trọng chúng ta cần biết là với một thuộc tính thì có thể sử dụng giá trị gì.

Tóm lại: với mỗi loại bộ chọn sẽ có các thuộc tính chuẩn đi kèm, và với mỗi thuộc tính sẽ có những giá trị phù hợp, các phần sau sẽ làm quen với một số thuộc tính và giá trị này, đồng thời học cách để sử dụng chúng một cách chính xác và hiệu quả.

Như vậy, chúng ta đã làm được 2 việc là viết mã HTML và viết chỉ dẫn định dạng (thường gọi là viết mã CSS). Việc sau cùng là gắn các chỉ dẫn định dạng vào tài liệu HTML, hay còn gọi là áp CSS vào tài liệu HTML.

Bước 3. Gắn CSS vào tài liệu HTML

Gắn CSS vào tài liệu HTML chính là việc chỉ cho trình duyệt biết mã CSS đang được để ở đâu? Để khi biên dịch, trình duyệt có thể tìm được mã CSS để định dạng nội dung hiển thị. Nhưng trước đó, chúng ta phải biết nơi để viết mã CSS?

 Có thể viết mã CSS ở 3 nơi khác nhau:

– Viết mã CSS ở trong tài liệu HTML

– Viết mã CSS ở ngoài tài liệu HTML

– Viết mã CSS ở trong phần tử HTML

Ứng với 3 nơi viết mã CSS ở trên, sẽ có 3 cách để chỉ cho trình duyệt tìm được mã CSS là: sử dụng phần tử <style>, sử dụng phần tử link và sử dụng thuộc tính style.

Viết mã CSS ở trong tài liệu HTML

Viết mã CSS ở trong tài liệu HTML (embedded style sheets), đây chính là cách chúng ta đã sử dụng để viết mã CSS ở ví dụ phía trên. Chúng ta đã viết mã CSS trong tài liệu HTML, cụ thể là trong tập tin index.html. Và dùng phần tử <style> để báo cho trình duyệt biết: mã CSS sẽ đặt ở trong phần tử này. Phần tử <style> phải được đặt trong phần tử <head>. Bằng cách này, mã CSS chỉ áp dụng được cho chính tài liệu HTML chứa nó.

Viết mã CSS ở ngoài tài liệu HTML

Viết mã CSS ở ngoài tài liệu HTML (external style sheets) là phương pháp được sử dụng nhiều nhất và có nhiều ưu điểm. Mã CSS sẽ được viết trong một tập tin riêng, có phần mở rộng là .css, tập tin này được liên kết tới một hoặc nhiều tài liệu HTML bằng phần tử link. Bằng cách này, với một tập tin CSS có thể áp dụng cho nhiều tài liệu HTML khác nhau.

Ví dụ,

Tại thư mục chứa tập tin index.html, chúng ta tạo thêm thư mục css, trong thư mục css tạo tập tin style.css.

Trong tập tin style.css, viết đoạn mã sau:

body {

    background-color: blue;

}

Thực hiện gắn CSS với tài liệu HTML bằng phần tử link. Trong tập tin index.html, thêm dòng mã sau:

    …

    <title>Document</title>

    <link rel="stylesheet" href="css/style.css">

    <style>

    …

Lưu lại các tập tin mã nguồn, mở trình duyệt sẽ thấy trang web có nền màu xanh.

Thuộc tính rel="stylesheet" cho biết mối quan hệ giữa tập tin sẽ được liên kết (style.css) với tập tin hiện tại (index.html) là gì? Trong trường hợp này, style.css sẽ là mã định dạng (stylesheet) cho index.html. rel là viết tắt của relationship.

Thuộc tính href="css/style.css" cho biết bị trí của tập tin chứa mã CSS. href là viết tắt của hypertext reference, nghĩa là tham chiếu tới một siêu văn bản.

Viết mã CSS ở trong phần tử HTML

Viết mã CSS ở trong phần tử HTML (inline style) được thực hiện bằng cách thêm thuộc tính style vào thẻ mở (open tag), nội dung mã CSS chính là giá trị của thuộc tính. Với cách này, mã CSS chỉ áp dụng được cho chính phần tử HTML chứa nó. Nên tránh sử dụng cách này, trừ một số trường hợp đặc biệt cần phải ghi đè mã CSS của hai phương pháp trên. Vì việc đưa mã định dạng vào trong phần tử HTML sẽ gây ra rất nhiều khó khăn khi cần thay đổi việc hiển thị của toàn bộ trang web.

Ví dụ, thêm CSS cho phần tử <p> như sau:

<body>

    <p style="color: yellow">Cu Teo hoc CSS</p>

</body>

Lưu lại mã nguồn, xem kết quả trên trình duyệt sẽ thấy chữ có màu vàng.

Chú thích trong CSS

Trong CSS, nội dung nằm trong cặp dấu /* */ sẽ được hiểu là chú thích. Ví dụ:

<style>

        /* định dạng phần tử p */

        p {

Khi thực thi đoạn mã CSS, trình duyệt sẽ bỏ qua đoạn mã chú thích. Do vậy, bạn có thể sử dụng chú thích để che đi các đoạn mã trong lúc tìm và sửa lỗi.

Phần tiếp theo sẽ trình bày một số khái niệm quan trọng của CSS, hiểu các khái niệm này sẽ giúp chúng ta làm việc với CSS được nhẹ nhàng và chuyên nghiệp. Nếu bạn chưa thể hiểu rõ các khái niệm này cũng không sao, vì trong các bài học kế tiếp sẽ có nhắc lại chúng trong các tình huống cụ thể.

-----

Cập nhật: 18/5/2024
-----

Tải tài liệu đầy đủ: Tự học HTML căn bản