Menu

Inline CSS: thuộc tính style và 3 cách thêm CSS vào HTML

Inline CSS đặt các khai báo ngay trên phần tử bằng thuộc tính style. Tìm hiểu cú pháp, khi nào inline style là lựa chọn đúng, vì sao nó thắng stylesheet, và so sánh nó với internal CSS và external CSS.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

Inline CSS là gì

Inline CSS là CSS viết trực tiếp trên một phần tử HTML bằng thuộc tính style. Giá trị là một danh sách khai báo, property: value;, và chúng chỉ áp dụng cho đúng phần tử đó.

Không có selector và không có dấu ngoặc nhọn: phần tử mang thuộc tính chính là mục tiêu. Ngăn cách các khai báo bằng dấu chấm phẩy. Dấu chấm phẩy cuối cùng không bắt buộc, nhưng giữ nó giúp việc thêm khai báo tiếp theo an toàn hơn.

Cú pháp

<element style="property: value; property: value;">
Thành phầnVí dụGhi chú
Thuộc tínhstyle="..."Một thuộc tính toàn cục: dùng được trên mọi phần tử HTML
Khai báocolor: #2563eb;Cùng cú pháp như trong một quy tắc của stylesheet
Nhiều khai báopadding: 8px; border: 1px solid #e5e7eb;Ngăn cách bằng ;
Dấu nháy bên trongstyle="font-family: 'Courier New', monospace;"Dùng nháy đơn bên trong thuộc tính đặt trong nháy kép

Những gì không phải khai báo đều không được phép. :hover, ::before, @media và selector không có chỗ trong thuộc tính style.

3 cách thêm CSS vào HTML

CSS đến được trang web theo ba cách. Trang này trình bày cách đầu tiên; external CSS và internal CSS có trang riêng.

CáchCSS nằm ở đâuPhạm viCách dùng điển hình
InlineThuộc tính style trên một phần tửPhần tử đóGiá trị riêng lẻ, giá trị do JavaScript đặt
InternalPhần tử <style> trong trangTrang đóDemo một trang, mẫu email, CSS quan trọng
ExternalMột tệp .css, liên kết bằng <link>Mọi trang liên kết đến nóĐịnh dạng cả trang web

Cùng một đoạn văn được định dạng theo cả ba cách (tệp external được thể hiện dưới dạng chú thích, vì khung xem trước không có tệp thứ hai để tải):

Đoạn văn thứ ba giữ padding và độ bo góc từ quy tắc .note và chỉ thay nền, vì inline style chỉ đặt đúng một thuộc tính đó.

Vì sao inline style thắng

Khi một quy tắc trong stylesheet và một inline style cùng đặt một thuộc tính, inline style thắng. Selector cụ thể đến đâu cũng không quan trọng: ngay cả selector ID cũng thua.

Ngoại lệ duy nhất là !important. Một khai báo trong stylesheet được đánh dấu !important thắng khai báo inline bình thường, và một !important inline thắng cả hai. Đó là lý do inline style khiến trang web khó bảo trì: để thay đổi chúng từ stylesheet, bạn cần !important, và thế là bắt đầu leo thang. Trang !important trình bày đầy đủ thứ tự này.

Khi nào inline CSS là công cụ đúng

Inline style phù hợp khi giá trị là dữ liệu, không phải thiết kế: nó thay đổi theo từng phần tử và do template hoặc JavaScript viết ra.

Vẻ ngoài (màu, chiều cao, độ bo góc) nằm trong stylesheet. Chỉ chiều rộng, khác nhau ở mỗi thanh, là inline. JavaScript ghi cùng thuộc tính đó qua element.style:

Sau khi bấm, HTML của đoạn văn thành style="color: rgb(245, 158, 11); font-weight: bold;". Tên thuộc tính có dấu gạch nối được viết theo camelCase trong JavaScript (font-weight là fontWeight).

Biến CSS thường là giải pháp trung gian gọn gàng nhất: chỉ đặt biến ở dạng inline, style="--progress: 35%", và để stylesheet sử dụng nó. Xem biến CSS.

Những điểm hạn chế của inline CSS

  • Không có trạng thái hay pseudo-element. Bạn không thể viết :hover, :focus hay ::before trong thuộc tính style.
  • Không có media query. Chiều rộng inline không thể thay đổi trên điện thoại.
  • Lặp lại. Mười nút có cùng inline style nghĩa là mười chỗ phải sửa.
  • Khó ghi đè. Chỉ !important trong stylesheet mới thắng được nó.
  • Content Security Policy. Một CSP nghiêm ngặt không có 'unsafe-inline' trong style-src sẽ chặn các thuộc tính style viết trong HTML.

Lỗi thường gặp

  • Viết selector hoặc dấu ngoặc nhọn trong style. style="p { color: red }" bị bỏ qua. Chỉ có khai báo mới được đặt ở đó.
  • Dùng = thay cho :. Phải là color: red, không phải color=red.
  • Lồng dấu nháy kép. style="font-family: "Arial"" làm thuộc tính kết thúc sớm. Dùng nháy đơn bên trong.
  • Quên đơn vị. style="width: 200" bị bỏ qua; hãy viết 200px. Độ dài 0 là trường hợp duy nhất được bỏ đơn vị.
  • Định dạng cả trang web bằng inline. Chuyển các kiểu lặp lại thành một class trong stylesheet và giữ inline style cho các giá trị riêng của từng phần tử.

Câu hỏi thường gặp

Inline CSS là gì?

Inline CSS là CSS viết trong thuộc tính style của một phần tử, như <p style="color: red;">. Các khai báo chỉ áp dụng cho đúng phần tử đó, không cần selector.

3 cách thêm CSS vào HTML là gì?

Inline, bằng thuộc tính style trên một phần tử; internal, bằng một phần tử <style> trong trang; và external, bằng một tệp .css riêng được liên kết qua <link rel="stylesheet" href="styles.css"> trong <head>. Tệp external là lựa chọn thông thường cho cả một trang web.

Inline CSS có ghi đè external CSS không?

Có, trong phần lớn trường hợp. Một khai báo trong thuộc tính style thắng mọi selector trong stylesheet, bất kể độ ưu tiên. Cách duy nhất để stylesheet thắng là dùng !important, và một !important inline lại thắng cả cái đó.

Dùng inline CSS có phải là thói quen xấu không?

Nếu dùng để định dạng cả trang web thì có: nó lặp đi lặp lại, không dùng được :hover hay media query, và khó ghi đè. Nó vẫn ổn cho những giá trị riêng lẻ do JavaScript hoặc template đặt, như chiều rộng thanh tiến độ hay màu người dùng chọn.

Có dùng hover trong inline CSS được không?

Không. Thuộc tính style chỉ nhận khai báo, nên không thể viết pseudo-class như :hover, pseudo-element như ::before hay quy tắc @media ở đó. Hãy đặt chúng trong một phần tử <style> hoặc một stylesheet.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu