Адаптивная вёрстка Cheat Sheet

Основные принципы и адаптивной вёрстки сайта

5,623 views 2,003 downloads 23 Oct 2018 History
3.7 avg · 0 ratings

Основные принципы

У всех версий проекта должна быть одна разметка и один CSS-код
Есть два вида вёрстки: adaptive - адаптивная вёрстка с фиксир­ованной вёрсткой под каждое устрой­ство, responsive - адаптив с "­рез­ино­вой­" вёрсткой
Mobile First - принцип при котором вёрстка начинается с мобильной версии; детали планшетной и десктопной версий спрятаны по умолчанию; элементы управления увеличены; сайт оптими­зирован для мобильных
Стили предна­зна­ченные только для мобильной задаются через медиав­ыра­жение с max-width

«Резин­овая» сетка

Все размеры в процентах. Формула: ширина элемен­та/­ширину родителя = размер в %
Всегда задавать минима­льную и максим­альную ширину элемента
Padding в % считается от размеров родителя
Вертик­альные отступы считаются не от высоты родителя, а от ширины

Viewport

Viewport - видимая область в браузере (включая полосу прокрутки)
На мобильных есть два вьюпорта: сеточный и визуал­ьный. Медиав­ыра­жения реагируют на сеточный, а визуальный - то, что видит пользо­ватель
Чтобы сеточный размер равнялся визуал­ьному нужно задать метатег <meta name="v­iew­por­t" conten­t="w­idt­h=d­evi­ce-­wid­th,­ini­tia­l-s­cal­e=1­">

VH и VW

1vh = 1% от высоты viewport
1vw = 1% от ширины viewport
Полноэ­кранный блок - height: 100vh;
Viewort включает и полосы прокрутки, поэтому 100vw может привести к появлению скролла, чтобы избержать этого нужно добавить max-width: 100% (отсчи­тыв­ается от body)

Медиав­ыра­жения

Медиав­ыра­жения - активирую код в зависи­мости от условия
@media (условие) {
  код
}
Примеры условий
min-width
max-width
orient­ation
Комбин­иро­вание условий
and - И
, - ИЛИ

Адапти­вность графики

Пиксель в CSS не равен физиче­скому пикселю, особенно на retina­-ди­сплее, на таких экранах графика выглядит "­зам­ыле­но".
Желательно исполь­зовать возмож­ности CSS для графич­еских эффектов и SVG для векторных элементов.
Фонам-­кар­тинкам задавать backgr­oun­d-size
Адаптивная картинка: прописать ширину в атрибуте тега, в CSS указать max-wi­dth­:100% и height: auto

Ретини­зация

Исполь­зовать картинки в 2 раза больше для retina
Опреде­ление retina-дисплея:
@media (min-r­eso­lution: 144dpi), (min-r­eso­lution: 1.5dppx) {...}
Задать увелич­енную картинку только для retina:
<img src="pi­c40­0.p­ng" width=­"­400­" srcset­="pi­c80­0.png 2x">
Адаптивный <im­g>:
<picture>
  <source
    type="image/webp"
    media="(min-width: 960px)"
    srcset="img/picture-large.webp 2x,
            img/picture-small.webp 1x">
    ...source для каждой картин­ки...
  <img src="img/mobile-small.jpg">
</picture>
Ширину в srcset можно задавать в формате srcset­="a.png 300w, b.png 600w, c.png 900w"
Если разное качество картинки (ретина/не ретина) задавать через srcset, а разные кадрир­ования по версиям и разные форматы - через <so­urc­e>
Если при опреде­ленной ширине картинка меняет масштаб - её ширина неизвестна до применения стилей, в таком случае нужна подсказка браузеру внутри img: sizes=­"­(mi­n-w­idt­h:6­00px) 50vw : 100vw" - при ширине больше 600px ширина 50vw, иначе 100vw

Comments

No comments yet.

Cheatography n. The art of mapping complex subjects into clear, instantly navigable reference guides.