@supports là feature query: hỏi trình duyệt xem nó có hiểu một cặp property/value hay không, rồi mới áp dụng khối bên trong.
css
.layout { display: flex; gap: 16px; }
@supports (display: grid) {
.layout { display: grid; grid-template-columns: repeat(3, 1fr); }
}Cú pháp hỗ trợ not, and, or và cả selector() để kiểm tra selector:
css
@supports selector(:has(a)) { /* browser understands :has() */ }
@supports (backdrop-filter: blur(4px)) or (-webkit-backdrop-filter: blur(4px)) { }Lưu ý khi phỏng vấn hay hỏi:
- Viết fallback trước,
@supportssau — trình duyệt cũ bỏ qua cả block nó không hiểu, trình duyệt mới ghi đè. @supportschỉ trả lời "có parse được không", không trả lời "có render đúng không". Một property được nhận nhưng lỗi thực thi vẫn lọt qua.- Không cần
@supportscho phần lớn CSS: cơ chế mặc định của CSS là bỏ qua khai báo không hiểu, nêndisplay: flex;rồidisplay: grid;liền nhau đã là fallback tự nhiên. Chỉ cần feature query khi phải đổi nhiều thuộc tính cùng lúc theo một tính năng.