Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> CSS

Quy tắc CSS @import - nhập stylesheet khác


Quy tắc @import trong CSS

Quy tắc @import cho phép **nhập (import) một stylesheet khác** vào stylesheet hiện tại. Giúp tổ chức code CSS theo module, dễ bảo trì.

Cú pháp

/* Cú pháp 1: URL trong ngoặc */
@import url("mystyle.css");

/* Cú pháp 2: Chuỗi trực tiếp (ít dùng) */
@import "mystyle.css";

/* Import với media query */
@import url("print.css") print;
@import url("mobile.css") screen and (max-width: 768px);

Quy tắc quan trọng

  • Phải đặt ở đầu file CSS - trước mọi quy tắc khác (trừ @charset)
  • Không được đặt bên trong block khác (như @media, @keyframes)
  • Có thể import nhiều file bằng nhiều @import

Ví dụ tổ chức CSS module

/* main.css */
@charset "UTF-8";

/* 1. Reset & Normalize */
@import url("normalize.css");

/* 2. Variables & Tokens */
@import url("variables.css");

/* 3. Base styles */
@import url("base.css");

/* 4. Components */
@import url("buttons.css");
@import url("cards.css");
@import url("forms.css");

/* 5. Layout */
@import url("grid.css");
@import url("header.css");
@import url("footer.css");

/* 6. Utilities */
@import url("utilities.css");

/* 7. Page-specific (optional) */
@import url("home.css") screen;
@import url("print.css") print;

Hiệu năng & Best Practice

Vấn đề Giải pháp
Chặn render (blocking) Trình duyệt phải tải xong file import mới parse CSS tiếp
Chuỗi import lồng nhau Tạo waterfall requests - rất chậm
Không cache hiệu quả Mỗi file riêng lẻ cache riêng

Khuyến nghị production

  • Development: Dùng @import cho module hóa, dễ debug
  • Production: Dùng build tool (Vite, Webpack, PostCSS, Sass) để **bundle thành 1 file CSS** - loại bỏ @import, gzip, minify
  • HTTP/2: Giảm nhẹ vấn đề multiple requests, nhưng bundle vẫn tốt hơn

@import vs <link>

<!-- HTML link - TỐT: song song tải, không chặn render -->
<link rel="stylesheet" href="styles.css">

<!-- CSS @import - KÉM: tuần tự, chặn render -->
@import url("styles.css");

Khuyến nghị: Dùng <link> trong HTML cho production. Dùng @import trong CSS chỉ khi build tool xử lý hoặc dev environment.