Адаптивный дизайн. Свежий взгляд
Стас Мельников
Наставник по HTML-верстке в "TeenCoder"
Познакомимся?
Требуется реализовать блок с фоновым изображением таким образом, чтобы он пропорционально изменялся в зависимости от устройства, а также полностью занимал весь первый экран пользователя.


Решения?
HTML
<header class="header">
<div class="welcome">
<h1 class="welcome__title">
I'am Stas Melnikov
<span class="welcome__label">Front-end developer from Penza, Russia</span>
</h1>
<div class="welcome__footer">
<a href="#" class="welcome__link">download resume</a>
<a href="#" class="welcome__link">buy theme</a>
<a href="#" class="welcome__link">documentation</a>
</div>
</div>
</header>
CSS
html, body{
height: 100%;
}
.header {
background: url("../images/programmer.jpg") no-repeat center 50%;
background-size: cover;
height: 100%;
width: 100%;
}
.welcome {
width: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 2;
}
VH и VW
VH/VW - это единицы измерения, которые рассчитываются относительно viewport


Задачи
- Фиксированная шапка
- Фиксированный каркас
- Landing Page
- Модальные окна
- Анимации
Рефакторинг
Проценты
VH
.header {
background: url("../images/programmer.jpg");
background-repeat: no-repeat;
background-position: center 50%;
background-size: cover;
height: 100vh;
width: 100%;
}
.welcome {
width: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 2;
}
html, body{
height: 100%;
}
.header {
background: url("../images/programmer.jpg");
background-repeat: no-repeat;
background-position: center 50%;
background-size: cover;
height: 100%;
width: 100%;
}
.welcome {
width: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 2;
}
Минус
- VW и VH включают в себя ширину скроллбара
Продолжаем
HTML
<div class="welcome">
<h1 class="welcome__title">
I'am Stas Melnikov
<span class="welcome__label">Front-end developer from Penza, Russia</span>
</h1>
</div>
<div class="welcome__footer"><a href="#" class="welcome__link">download resume</a></div>
CSS
.welcome {
font-size: 10px;
}
.welcome__title {
font-size: 8em; /*80px*/
line-height: 80px;
}
.welcome__label {
font-size: .2em; /*16px*/
}
.welcome__link {
font-size: 1.4em;/*14px*/
padding: .35715em 1.42856em;/*5px / 14px = 0.35715 и 20px / 14px = 1.4285em*/
margin: 0 .7143em;/*10px / 14px = 0.7143em*/
}
@media screen and (max-width: 640px){
.welcome{
font-size: 6px;
}
.welcome__title {
line-height: 48px;
}
}
Как-то сложно
Минусы
- Зависимость от HTML
- Много считать
Плюсы
- Тренировка мозга
REM
root em
REM - это единица измерения, которая рассчитывается относительно корневого элемента страницы(html)

Рефакторинг
EM
REM
html{
font-size: 10px;
}
.welcome__title {
font-size: 8rem; /*80px*/
line-height: 8rem;
}
.welcome__label {
font-size: 1.6rem; /*16px*/
}
.welcome__link {
font-size: 1.4rem; /*14px*/
padding: .5rem 2rem; /*5px и 20px*/
margin: 0 1rem; /*10px*/
}
@media screen and (max-width: 640px){
html{
font-size: 6px;
}
}
.welcome {
font-size: 10px;
}
.welcome__title {
font-size: 8em; /*80px*/
line-height: 80px;
}
.welcome__label {
font-size: .2em; /*16px*/
}
.welcome__link {
font-size: 1.4em;/*14px*/
padding: .35715em 1.42856em;/*5px и 20px*/
margin: 0 .7143em;/*10px*/
}
@media screen and (max-width: 640px){
.welcome{
font-size: 6px;
}
.welcome__title {
line-height: 48px;
}
}
Минусы
- Не нашел
Old
New




Old
New
Кто использует?
Ссылки
Стас Мельников
Адаптивный дизайн. Свежий взгляд
By Stas Melnikov
Адаптивный дизайн. Свежий взгляд
Мобильные устройства уже плотно осели в нашей жизни. Большинство пользователей заходят в интернет, используя телефон или планшет. Поэтому разработчики уже не могут игнорировать их. Адаптивный дизайн был большим шагом на встречу к "мобильности", но в тоже время было несколько неудобств в реализации. С появлением vw, vw и rem адаптивная верстка стала намного проще.
- 1,015