На сьогоднішній день макет веб-сайту повинен адаптуватися не тільки до комп'ютерів, але і до планшетів, мобільних пристроїв і навіть телевізорів.
Медіа-запит - це функція CSS3, яка використовується для адаптації макета веб-сторінки до різних розмірів екрану і типів пристроїв.
Синтаксис
@media media type and (condition: breakpoint) {
// Правила CSS
}
Наприклад, потрібно збільшити розмір шрифту для мобільних пристроїв. Для цього потрібно встановити максимальну ширину, яка перевіряє ширину пристрою:
.text {
font-size: 14px;
}@media (max-width: 480px) {
.text {
font-size: 16px;
}
}
Зазвичай розмір тексту становить 14 пікселів. Однак, оскільки застосовано медіа-запит, він зміниться до 16 пікселів при максимальній ширині пристрою 480 пікселів і менше.
Типи пристроїв
Типи пристроїв розміщуються відразу після правила @media. Якщо тип не вказано, правило @media вибирає всі типи за замовчуванням. Існує безліч видів пристроїв, проте їх можна розділити на 4 категорії:
- all - для всіх типів пристроїв;
- print - для принтерів;
- screen - для екранів комп'ютерів, планшетів і смартфонів;
- speech - для скрінрідеров, які «читають» сторінку вголос.
Наприклад, щоб вибрати тільки екрани, потрібно встановити ключове слово screen відразу після правила @media. Правила також необхідно об'єднати ключовим словом «and»:
@media screen and (max-width: 480px) {
.text {
font-size: 16px;
}
}
Точки зупинки
Точка зупинки (break point)- це ключ, який визначає, коли слід змінити макет і адаптувати нові правила всередині медіа-запитів.
У прикладі:
@media screen and (max-width: 480px) {
.text {
font-size: 16px;
}
}
Тут точка зупинки становить 480 пікселів. Тепер медіа-запит знає, коли встановлювати або перезаписувати новий клас. Якщо ширина пристрою менше 480 пікселів, то буде застосований клас text.
Метатег viewport
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Властивість width визначає віртуальну ширину вікна перегляду, значення device-width - фізичну ширину пристрою. Іншими словами, width відображає значення document.documentElement.clientWidth, а device-width - screen.width. При першому завантаженні сторінки властивість initial-scale керує початковим рівнем масштабування, initial-scale = 1 означає, що 1 піксель вікна перегляду = 1 піксель CSS.
На які розміри екрану потрібно орієнтуватися
При складанні медіазапитів потрібно орієнтуватися на так звані переломні (контрольні) точки дизайну, тобто такі значення ширини області перегляду, в яких дизайн сайту істотно змінюється, наприклад, з'являється горизонтальна смуга прокрутки. Щоб визначити ці точки, потрібно відкрити сайт в браузері і поступово зменшувати область перегляду.
Поширені точки зупинки:
- 320px - 480px: мобільні пристрої;
- 481px - 768px: планшети;
- 769px - 1024px: маленькі екрани, ноутбуки;
- 1025px - 1200px: великі екрани;
- 1201px і більше - дуже великі екрани, телевізори.
/* Smartphones (вертикальна і горизонтальна ориєнтація) ----------- */
@media only screen and (min-width : 320px) and (max-width : 480px) {
/* стилі */
}
/* Smartphones (горизонтальна) ----------- */
@media only screen and (min-width: 321px) {
/* стилі */
}
/* Smartphones (вертикальная) ----------- */
@media only screen and (max-width: 320px) {
/* стилі */
}
/* iPads (вертикальна і горизонтальна) ----------- */
@media only screen and (min-width: 768px) and (max-width: 1024px) {
/* стилі */
}
/* iPads (горизонтальна) ----------- */
@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
/* стилі*/
}
/* iPads (вертикальна) ----------- */
@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {
/* стилі */
}
/* iPad 3**********/
@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) and (-webkit-min-device-pixel-ratio: 2) {
/* стилі */
}
@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
/* стилі */
}
/* Настільні комп'ютери і ноутбуки ----------- */
@media only screen and (min-width: 1224px) {
/* стилі */
}
/* Великі екрани ----------- */
@media only screen and (min-width: 1824px) {
/* стили */
}
/* iPhone 4 ----------- */
@media only screen and (min-width: 320px) and (max-width: 480px) and (orientation: landscape) and (-webkit-min-device-pixel-ratio: 2) {
/* стилі */
}
@media only screen and (min-width: 320px) and (max-width: 480px) and (orientation: portrait) and (-webkit-min-device-pixel-ratio: 2) {
/* стилі */
}
/* iPhone 5 ----------- */
@media only screen and (min-width: 320px) and (max-height: 568px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2){
/* стили */
}
@media only screen and (min-width: 320px) and (max-height: 568px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2){
/* стили */
}
/* iPhone 6 ----------- */
@media only screen and (min-width: 375px) and (max-height: 667px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2){
/* стили */
}
@media only screen and (min-width: 375px) and (max-height: 667px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2){
/* стилі */
}
/* iPhone 6+ ----------- */
@media only screen and (min-width: 414px) and (max-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2){
/* стилі */
}
@media only screen and (min-width: 414px) and (max-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2){
/* стилі */
}
/* Samsung Galaxy S3 ----------- */
@media only screen and (min-width: 320px) and (max-height: 640px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2){
/* стилі */
}
@media only screen and (min-width: 320px) and (max-height: 640px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2){
/* стилі */
}
/* Samsung Galaxy S4 ----------- */
@media only screen and (min-width: 320px) and (max-height: 640px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3){
/* стилі */
}
@media only screen and (min-width: 320px) and (max-height: 640px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3){
/* стилі */
}
/* Samsung Galaxy S5 ----------- */
@media only screen and (min-width: 360px) and (max-height: 640px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3){
/* стилі */
}
@media only screen and (min-width: 360px) and (max-height: 640px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3){
/* стилі */
}
Чуйність є обов'язковим параметром в сучасній області веб-дизайну і розробки, а медіа-запити - одні з найбільш важливих частин створення чуйних макетів.
Приклади застосування медіа-запитів
Приклад 1
Приклад 2
Приклад 3