Responsive - media queries là gì?
Để xử lý thay đổi giao diện giữa các dạng màn hình khác nhau (chiều rộng màn hình khác nhau), chúng ta sẽ sử dụng truy vấn @media
.
Cấu trúc
Truy vấn @media
được viết trong file CSS, với cấu trúc như sau:
@media only|not Media-type and (Media-future and|or|not Media-future) { tag { property: value; } }
Media-type
Giá trị | Mô tả |
---|---|
screen | Dành cho trang hiển thị (không dành cho bản in). |
Dành cho bản in (không dành cho trang hiển thị). | |
all | Mặc định, dành cho trang hiển thị và cả bảng in. |
speech | Dành cho phiên bản hỗ trợ đọc thành tiếng. |
Media-future
Có nhiều giá trị khác nhau, nhưng bài học này sẽ chỉ giới thiệu một số Media-future
thường dùng:
Giá trị | Mô tả |
---|---|
max-width | Chiều rộng lớn nhất màn hình của thiết bị, tức là những thiết bị có màn hình nhỏ hơn max-width sẽ bị ảnh hưởng source code. |
min-width | Chiều rộng nhỏ nhất màn hình của thiết bị, tức là những thiết bị có màn hình lớn hơn min-width sẽ bị ảnh hưởng source code. |
Ví dụ đơn giản
div { background-color: blue; } @media only screen and (max-width: 1024px) { div { background-color: red; } }
Nội dung code trên như sau:
- Tất cả các thiết bị sẽ có
background-color: blue
, riêng các thiết bị có màn hình nhỏ hơn1024px
sẽ cóbackground-color: red
. only screen
: chỉ dành cho trang hiển thị (không dành cho bản in (print)).max-width
: chỉ tác dụng cho chiều rộng màn hình lớn nhất là1024px
, tức là những màn hình nào nhỏ hơn1024px
đều sẽ bị ảnh hưởng code bên trong, cụ thể làdiv
sẽ cóbackground-color: red
.
Ví dụ thêm
Chúng ta sẽ thử thay đổi background-color
khác nhau tương ứng với các màn hình khác nhau, ta viết như sau:
HTML viết:
<div>Học Web Chuẩn</div>
CSS viết - khi chưa sử dụng @media
:
div { background-color: #92dfc8; height: 150px; line-height: 150px; text-align: center; width: 200px; }
Hiển thị trình duyệt - khi chưa sử dụng @media
:
Bây giờ ta sẽ thử điều chỉnh sao cho khi thay đổi chiều rộng màn hình thì background-color
của <div>
sẽ thay đổi.
CSS viết - sử dụng @media
để chỉnh hiện thị theo chiều rộng màn hình:
div { background-color: #333333; height: 150px; line-height: 150px; text-align: center; width: 200px; } @media only screen and (max-width: 1024px) { div { background-color: red; } } @media only screen and (max-width: 768px) { div { background-color: blue; } } @media only screen and (max-width: 640px) { div { background-color: yellow; } } @media only screen and (max-width: 480px) { div { background-color: pink; } }
Click ví dụ @media để xem kết quả.