Статьи

Media queries CSS як АДАПТУВАТИ сайт

  1. Медіа запит складається
  2. типи носія
  3. Логічні оператори
  4. Логічні оператори:
  5. Описуємо основну структуру в HTML і CSS
  6. Потім визначимо для них стилі
  7. Підключаємо CSS media queris
  8. Розмір екрану менше 992px
  9. Розмір екрану менше 768px
  10. Розмір екрану менше 480px
  11. Підключаємо Media Queries Javascript

CSS3 Медіа-запити (Media queries CSS), дозволяють реалізувати як адаптивний веб-дизайн так і всякого роду оформлення. В даному матеріалі по свешеннимі Media queries ми реалізуємо приклад як робляться адаптивні сайти.

See the Pen aVRZxO by Denis ( @Dwstroy ) on CodePen .

З відео ви дізнаєтеся:

  • що таке Media queries і його складові елементи;
  • як формується медіа запити;
  • розглянемо практично приклад адаптивного дизайну сайту.

Медіа запит складається

@media screen and (max-width: 480px) {h1 {font-size: 25px; }}

Медіа запит складається з типу носія, одного або декількох умов, що представляє собою логічне вираження, яке може бути істинним або хибним, і це все дозволяє перевіряти якісь властивості самого пристрою.

типи носія

В се запити починаються з правила @madia, далі йде умова, в якому пишемо тип носія (screen), він дозволяє отримати точну інформацію, на якому пристрої відкрита дана сторінка. Крім цього типу є й інші носії як print, all і speech.

Типи носіїв включають в себе

  • all - Підходить для всіх видів пристроїв. Це значення використовується за умовчанням.
  • print - Перегляд на екрані сторінок в режимі попереднього перегляду друку.
  • screen - Перегляд на екрані кольорових комп'ютерних моніторах.
  • speech - Мовні синтезатори, а також програми для відтворення тексту вголос. Сюди, наприклад, можна віднести мовні браузери.

У CSS2.1 були кілька додаткових типів, але вони прийняті застарілими і в Media Queries 4 не задіяні.

Застарілі типи носіїв:

  • braille - Пристрої, засновані на системі Брайля, які призначені для читання сліпими людьми.
  • embossed - Принтери, що використовують для друку систему Брайля.
  • handheld - Смартфони і аналогічні їм апарати.
  • projection - проектори.
  • tty - Пристрої з фіксованим розміром символів (телетайпи, термінали, пристрої з обмеженнями дисплея).
  • tv - Телевізори.

Більшою мірою використовуються два типи носіїв print і screen, так як вони включають в себе будь-який пристрій для відображення на екрані, і найголовніше підтримуються більшістю браузерів.

Логічні оператори

З атем йдуть логічні оператори, за допомогою яких можна писати додаткові умови, якщо це необхідно.

Наприклад, and, еквівалентно «І», і в цьому випадку якщо одна з умов буде не істиною означати і весь вираз, є брехнею.

Наступний оператор «запита», яка еквівалентна «АБО», і в даному випадку якщо одна з умов вірне, значить вираз є істиною.

Оператор not заперечення, а only дозволяє приховати стиль від всіх браузерах, які не підтримують цю умову.

Логічні оператори:

  • and - Пов'язує один з одним різні умови (еквівалентно «і»);
  • not - Дозволяє спрацювати медіа запитом в протилежному випадку (еквівалентно «заперечення»);
  • only - Приховує стилі для браузера, які не підтримують дані умови;
  • , - Кома працює по аналої з логічним оператором or (еквівалентно «або»);

Умова медіа запиту

Потім йде умова, де можна задавати ширину області перегляду, її висоту, перевіряти співвідношення сторін, орієнтацію, дозволу екрану в пікселях і так далі. В принципі їх там не багато, більш докладний список буде в описі під роликом.

Найпоширеніші умови це максимальна і мінімальна ширина max-width min-widt

Прописавши (max-width: 480px), сам стиль в нутрії дужок буде застосований в тому випадку, коли ширина екрану менше 480 пікселів.

Саме на таких прикладах базується адаптивна верстка, коли нам потрібно застосувати стилі під певні розширення екрани мобільного пристрою і все це робиться через CSS (media queries).

  • width min-width max-width - ширина;
  • height min-height max-height - висота;
  • device-width min-device-width max-device-width - ширина на пристрої;
  • device-height min-device-height max-device-height orientation - висота на пристрої;
  • aspect-ratio min-aspect-ratio max-aspect-ratio - співвідношення сторін;
  • device-aspect-ratio min-device-aspect-ratio max-device-aspect-ratio - співвідношення сторін на пристрої;
  • resolution min-resolution max-resolution - дозвіл екрана (кількість пікселів);
  • color min-color max-color - кількість біт на кожні з кольорових компонентів пристрою виведення;
  • color-index min-color-index max-color-index - кількість записів в таблиці подставнокі квітів;
  • monochrome min-monochrome max-monochrome - кількість бітів на піксель монохромного пристрої;
  • scan grid - сітка сканування;

Описуємо основну структуру в HTML і CSS

Тепер розглянемо, як це виглядає в дійсності на прикладі створення простенького каркаса сайту.

Створюємо п'ять блоків, шапка сайту header, верхнє меню top_menu, лівий сайт бар sideLeft, область для контенту content і підвал footer.

<Div class = "header"> </ div> <div class = "top_menu"> </ div> <div class = "sideLeft"> </ div> <div class = "content"> </ div> <div class = "footer"> </ div>

Потім визначимо для них стилі

Для header призначимо свій колір, вкажемо ширину в 100%, висоту в 200 пік. і закруглити кути.

.header {background: # aefff7; width: 100%; height: 200px; border-radius: 5px; }

Верхньому меню призначимо, свій колір, ширину в 100%, зробимо відступ зверху в 5 пік., Висоту в 50 пік.

.top_menu {background: # 87c5ff; width: 100%; margin-top: 5px; height: 50px; }

Сайт бару, прописуємо свої стилі і пригорнемо його до лівого краю:

.sideLeft {background: # 81ffb6; width: 30%; height: 354px; margin-top: 5px; padding: 1px 0; float: left; }

Далі для області під контент пишемо свої стилі:

.content {background: #fefffd; width: 69%; margin-top: 5px; height: 355px; float: right; }

І завершальний блок це футер, робимо його на всю ширину в своєму кольорі:

.footer {background: # 91a43c; width: 100%; margin-top: 5px; height: 70px; }

Через те що sideLeft і content є плаваючими елементами за рахунок float, потрібно скинути обтікання цих блоків за допомогою clear: both; .

Створимо клас і вставимо додатковий блок з цим класом:

.clear {clear: both; } <Div class = "clear"> </ div>

У нас вийшов такого роду гумовий шаблон сайту, умовно розділений на блоки.

Підключаємо CSS media queris

Для наочної адаптації, зробимо шаблон фіксованої ширини, обгорнемо всі наші блоки в обгортку, призначимо обгортці ширину в 980 пік. і отцентріруем по середині екрана.

<Div class = "wrapper"> <div class = "header"> </ div> <div class = "top_menu"> </ div> <div class = "sideLeft"> </ div> <div class = "content "> </ div> <div class =" clear "> </ div> <div class =" footer "> </ div> </ div> .wrapper {width: 940px; margin: 50px auto; }

Потім для всіх медіа запитів створимо окремий файл media-queries.css, який підключимо після основного стилю.

<Link href = "media-queries.css" rel = "stylesheet" type = "text / css">

Розмір екрану менше 992px

Відкриваємо файл media-queries.css на редагування, і напишемо свою умову для дестопних екранів.

Починаємо з правила @media, приховуємо стилі для браузерів які їх не підтримують only, потім пишемо носій screen і логічний оператор and «І», далі умова максимально ширини в 992 пік. тобто якщо сторінка буде менше цієї ширини тоді застосуємо наші стилі.

Потім, в фігурних дужках описуємо стилі для даного розширення:

/ * Medium Devices, Desktops * / @media only screen and (max-width: 992px) {}

Ширину обгортки зменшимо на 750 пік.

.wrapper {width: 750px; }

Поміняємо у блоків колір, а у footer трохи зменшимо висоту:

.wrapper {width: 750px; } .Header {background: # a1ece5; } .Top_menu {background: # 64f1eb; } .SideLeft {background: # 80e47e; } .Content {background: # f0f1ef; } .Footer {background: # 9ea424; height: 45px; }}

Розмір екрану менше 768px

Потім опишемо Медеа запит для середніх екранів, таких як планшети. Я скопіюють попередній стилі, заміню максимальну ширину на 768 пік. і в ньому опишу стилі для даного розширення екрану.

/ * Small Devices, Tablets * / @media only screen and (max-width: 768px) {}

Обгортку зменшуємо до 450 пік.

.wrapper {width: 450px; }

У header поміняємо колір, його висоту, і зробимо радіус в 3 пік.

.header {background: # 86ebff; height: 100px; border-radius: 3px; }

Теж саме проробимо з top_menu

.top_menu {background: # 2ca9b7; margin-top: 4px; height: 25px; }

Лівий сайт бар, міняємо колір, робимо по всій ширині, зменшуємо відступ до 4 пік. прибираємо обтікання.

.sideLeft {background: # 5ab37f; width: 100%; margin-top: 4px; float: none; }

Для наочності додамо в сайт бар додаткові блоки і оформимо їх належним чином.

<Div class = "sideLeft"> <div class = "bar"> </ div> <div class = "bar"> </ div> <div class = "bar"> </ div> </ div>

Прибираємо висоту .sideLeft

.bar {background: # a5fdcf; border-radius: 5px; border: 1px solid # 129d52; margin: 3px auto; width: 95%; height: 110px; }

Для блоку під контент, міняємо колір, робимо ширину в 100%, відступ в 4 пік, зменшуємо висоту і прибираємо обтікання.

.content {background: #dbdddb; width: 100%; margin-top: 4px; height: 250px; float: none; }

Потім footer трохи зменшимо по висоті, колір і відступ трохи підкоригуємо:

.footer {background: # 758430; margin-top: 4px; height: 35px; }

Давайте для топ меню додамо іконку у вигляді кнопки як на мобільних пристроях і для цього створюємо додаткові блоки.

<Div class = "knopka"> <div class = "lan"> </ div> <div class = "lan"> </ div> <div class = "lan"> </ div> </ div>

Потім опишемо загальні стилі, і приховуємо їх:

.top_menu {background: # 87c5ff; width: 100%; margin-top: 5px; height: 50px; position: relative; } .Knopka {display: none; width: 32px; height: 21px; top: 2px; left: 6px; background: # 6d6e6d; border-radius: 2px; position: absolute; } .Lan {width: 29px; height: 3px; background: # 2b2828; margin: 3px auto; }

Розмір екрану менше 480px

Потім опишемо стилі під маленькі розширення екранів які підходять під мобільні пристрої.

/ * Extra Small Devices, Phones * / @media only screen and (max-width: 480px) {}

Робимо обгортку в 320 пік.

.wrapper {width: 320px; }

У решти блоків поміняємо колір.

.header {background: # 3dfff2; } .Top_menu {background: # 328e8d; } .SideLeft {background: # 91b399; } .Content {background: # f2f4f2; } .Footer {background: # 6d6e6d; }}

Для більш, плавних переходів, скористаємося властивістю transition, і застосуємо його до всіх елементів.

* {Transition: all .2s; }

На дрібненькі розширень правильніше було б, якщо після верхнього меню, відразу йшов контент, а потім, правий сайтбар. Для того що б реалізувати це в нашому випадку досить блок з контентом перемістити вище сайтбара.

<Div class = "content"> </ div> <div class = "sideLeft"> <div class = "bar"> </ div> <div class = "bar"> </ div> <div class = "bar "> </ div> </ div>

Підключаємо Media Queries Javascript

Медіо запити не підтримуються браузером Internet Explorer 8 і більше ранніх версій, для них потрібно підключити додатковий Javascript файл css3-mediaqueries.js.

<! - [if lt IE 9]> <script src = "http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"> </ script> <! [Endif] ->

Посилання на скачування -

Посилання на скачування -

Я показав базові принципи адаптивного дизайну, але є й інші методи які у багато разів спрощують цю роботу. Слідкуйте за нашим сайтом і обов'язково про них дізнаєтеся.

Залишити коментар:

Новости