🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру

Удобно листать не только прокруткой, но и клавишами‑стрелками:

 
между важными местами
Shift
между
разворотами
Васи­лий Полов­нёв, Игорь Пет­ров

ХТМЛ.
Вёрстка сайтов

Изда­тель­ство Бюро Гор­бу­нова
2021
Василий Половнёв, Игорь Петров

ХТМЛ.
Вёрстка сайтов

Издательство Бюро Горбунова
2021
удк 004.42
ббк З973.42
П52
Васи­лий Полов­нёв, Игорь Пет­ров
П52
ХТМЛ. Вёрстка сай­тов для дизай­не­ров, редак­то­ров и руко­во­ди­те­лей.—
М.: Изд‑во Бюро Гор­бу­нова, 2021

Эта книга — поша­го­вая инструк­ция по вёрстке сай­тов на язы­ках ХТМЛ и ЦСС. Вы узна­ете не только как свер­стать сайт, но и как опуб­ли­ко­вать его в интер­нете, настро­ить кра­си­вый шаринг в соц­сети и под­клю­чить системы аналитики.

Отдель­ный раз­дел книги посвя­щён работе с вер­сталь­щи­ком: как ста­вить задачи, полу­чать пред­ска­зу­е­мый резуль­тат и пра­вильно при­ни­мать и внед­рять вёрстку.

Оглавление

удк 004.42
ббк З973.42
П52
П52
Василий Половнёв, Игорь Петров
ХТМЛ. Вёрстка сайтов для дизайнеров, редакторов и руководителей.—
М.: Изд‑во Бюро Горбунова, 2021

Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.

Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.

Оглавление

Скрыто 103 разворота
Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Любую слож­ную модуль­ную вёрстку можно раз­бить на вло­жен­ные друг в друга флекс‑кон­тей­неры с соб­ствен­ным рит­мом эле­мен­тов. Ска­жем, клас­си­че­ская трёх­ко­лон­ная вёрстка, состо­я­щая из шапки, ста­тьи и двух сайдба­ров, рас­кла­ды­ва­ется в 4 флекс‑контейнера.

Нач­нём с раз­метки трех­ко­ло­ноч­ной страницы:

<header>
  <div>Логотип</div>
  …
</header>

<main>
  <article>
    <p>…</p>
  </article>
  
  <nav>
    <li>Навигация</li>
    …
  </nav>
  
  <aside>
    <div>Реклама</div>
    …
  </aside>
</main>

Пре­вра­тим шапку, содер­жи­мое и сайдбары во флекс‑кон­тей­неры и рас­кра­сим флекс‑эле­менты для наглядности:

header,
main,
aside,
nav {
  display: flex;
}

header > *,
article > *,
aside > *,
nav > * {
  min-height: 36px;
  padding: 9px;
  margin: 9px;
  background: #e5f5ff;
}

Обра­тите вни­ма­ние: по умол­ча­нию флекс‑эле­менты раз­ло­жи­лись в строку, flex-direction: row

Дадим стра­нице всю доступ­ную высоту, раз­ло­жим по вер­ти­кали и рас­тя­нем её содержимое:

body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

main {
  flex-grow: 1; /* Это заклинание заставляет <main> занять всё свободное пространство. Мы рассмотрим его чуть позже */
}

В левом сайдбаре раз­ло­жим эле­менты сверху вниз:

nav {
  flex-direction: column;
  justify-content: flex-start;
}

В пра­вом сайдбаре рав­но­мерно рас­пре­де­лим элементы:

aside {
  flex-direction: column;
  justify-content: space-between;
}

И поме­няем поря­док эле­мен­тов, чтобы колонка с нави­га­цией была слева:

nav {
  flex-direction: column;
  justify-content: flex-start;
  order: -1; /* И это свойство мы рассмотрим чуть позже */
}

По умол­ча­нию флекс‑эле­менты зани­мают столько места, сколько нужно их содер­жи­мому. Поэтому колонки с нави­га­цией и рекла­мой сжались.

Чтобы ширина коло­нок с нави­га­цией и рекла­мой не зави­села тек­ста, под­чи­ним вёрстку пяти­ко­ло­ноч­ной сетке. Зада­дим про­пор­ции, по кото­рым колонки и ста­тья делят сво­бод­ное место в 1:3:1:

nav {
  flex-direction: column;
  justify-content: flex-start;
  order: -1;
  flex-grow: 1;
  flex-basis: 0;
}

aside {
  flex-direction: column;
  justify-content: space-between;
  flex-grow: 1;
  flex-basis: 0;
}

article {
  flex-grow: 3;
  flex-basis: 0;
}
Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Логотип
Новости
Проекты
О нас

Используя таблицу интегралов элементарных функций, получим: турбулентность волнообразна. Волна доступна. Теорема традиционно искажает неопровержимый вектор.

Любую сложную модульную вёрстку можно разбить на вложенные друг в друга флекс‑контейнеры с собственным ритмом элементов. Скажем, классическая трёхколонная вёрстка, состоящая из шапки, статьи и двух сайдбаров, раскладывается в 4 флекс‑контейнера.

Начнём с разметки трехколоночной страницы:

<header>
  <div>Логотип</div>
  …
</header>

<main>
  <article>
    <p>…</p>
  </article>
  
  <nav>
    <li>Навигация</li>
    …
  </nav>
  
  <aside>
    <div>Реклама</div>
    …
  </aside>
</main>

Превратим шапку, содержимое и сайдбары во флекс‑контейнеры и раскрасим флекс‑элементы для наглядности:

header,
main,
aside,
nav {
  display: flex;
}

header > *,
article > *,
aside > *,
nav > * {
  min-height: 36px;
  padding: 9px;
  margin: 9px;
  background: #e5f5ff;
}

Обратите внимание: по умолчанию флекс‑элементы разложились в строку, flex-direction: row

Дадим странице всю доступную высоту, разложим по вертикали и растянем её содержимое:

body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

main {
  flex-grow: 1; /* Это заклинание заставляет <main> занять всё свободное пространство. Мы рассмотрим его чуть позже */
}

В левом сайдбаре разложим элементы сверху вниз:

nav {
  flex-direction: column;
  justify-content: flex-start;
}

В правом сайдбаре равномерно распределим элементы:

aside {
  flex-direction: column;
  justify-content: space-between;
}

И поменяем порядок элементов, чтобы колонка с навигацией была слева:

nav {
  flex-direction: column;
  justify-content: flex-start;
  order: -1; /* И это свойство мы рассмотрим чуть позже */
}

По умолчанию флекс‑элементы занимают столько места, сколько нужно их содержимому. Поэтому колонки с навигацией и рекламой сжались.

Чтобы ширина колонок с навигацией и рекламой не зависела текста, подчиним вёрстку пятиколоночной сетке. Зададим пропорции, по которым колонки и статья делят свободное место в 1:3:1:

nav {
  flex-direction: column;
  justify-content: flex-start;
  order: -1;
  flex-grow: 1;
  flex-basis: 0;
}

aside {
  flex-direction: column;
  justify-content: space-between;
  flex-grow: 1;
  flex-basis: 0;
}

article {
  flex-grow: 3;
  flex-basis: 0;
}

Упражнение: выравнивание флексбоксом

Изме­ните ЦСС так, чтобы пер­вый ука­за­тель повто­рил второй.


  
align-items: flex-end;
display: flex;
display: flex;
flex-flow: column;
justify-content: space-between;
margin-left: auto;
.plate {
}
.plate__header,
.plate__footer {
}
.plate__footer {
}
.plate__floor,
.plate__right {
}

Вёрстка

  • Платформы 1⁠—4

  • Макдональдс

  • Бюро находок

  • Платформы 5⁠—8

  • Камеры хранения

  • Туалет

  • Кассы

Дизайн

  • Платформы 1⁠—4

  • Макдональдс

  • Бюро находок

  • Платформы 5⁠—8

  • Камеры хранения

  • Туалет

  • Кассы

Вёрстка

  • Платформы 1⁠—4

  • Макдональдс

  • Бюро находок

  • Платформы 5⁠—8

  • Камеры хранения

  • Туалет

  • Кассы

Дизайн

  • Платформы 1⁠—4

  • Макдональдс

  • Бюро находок

  • Платформы 5⁠—8

  • Камеры хранения

  • Туалет

  • Кассы

Упражнение: выравнивание флексбоксом

Измените ЦСС так, чтобы первый указатель повторил второй.


  
align-items: flex-end;
display: flex;
display: flex;
flex-flow: column;
justify-content: space-between;
margin-left: auto;
.plate {
}
.plate__header,
.plate__footer {
}
.plate__footer {
}
.plate__floor,
.plate__right {
}

Перенос флекс‑элементов

По умол­ча­нию флекс‑кон­тей­нер одно­строч­ный: невме­ща­ю­щи­еся эле­менты пере­пол­няют его. Чтобы сде­лать его мно­го­строч­ным и раз­ре­шить пере­нос эле­мен­тов, исполь­зуют flex-wrap: wrap или flex-wrap: wrap-reverse

При этом flex-wrap: wrap-reverse рас­кла­ды­вает невме­ща­ю­щи­еся эле­менты в направ­ле­нии, про­ти­во­по­лож­ном попе­реч­ной оси: снизу вверх

По умолчанию

1
2
3
4
5
6
7
8
9

flex‑wrap: wrap

1
2
3
4
5
6
7
8
9

flex‑wrap: wrap‑reverse

1
2
3
4
5
6
7
8
9

Перенос флекс‑элементов

По умолчанию флекс‑контейнер однострочный: невмещающиеся элементы переполняют его. Чтобы сделать его многострочным и разрешить перенос элементов, используют flex-wrap: wrap или flex-wrap: wrap-reverse

При этом flex-wrap: wrap-reverse раскладывает невмещающиеся элементы в направлении, противоположном поперечной оси: снизу вверх

По умолчанию

1
2
3
4
5
6
7
8
9

flex‑wrap: wrap

1
2
3
4
5
6
7
8
9

flex‑wrap: wrap‑reverse

1
2
3
4
5
6
7
8
9

При смене направ­ле­ния глав­ной оси меня­ется и пове­де­ние пере­носа: flex-wrap: wrap рас­кла­ды­вает невме­ща­ю­щи­еся колонки по попе­реч­ной оси, wrap-reverse — по попе­реч­ной, но в обрат­ном порядке.

flex‑direction: column и flex‑wrap: wrap

1
2
3
4
5
6
7
8
9

flex‑direction: column и flex‑wrap: wrap‑reverse

1
2
3
4
5
6
7
8
9

При смене направления главной оси меняется и поведение переноса: flex-wrap: wrap раскладывает невмещающиеся колонки по поперечной оси, wrap-reverse — по поперечной, но в обратном порядке.

flex‑direction: column и flex‑wrap: wrap

1
2
3
4
5
6
7
8
9

flex‑direction: column и flex‑wrap: wrap‑reverse

1
2
3
4
5
6
7
8
9

В мно­го­строч­ных кон­тей­не­рах за вырав­ни­ва­ние строк на попе­реч­ной оси отве­чает свой­ство align-content

align‑content: stretch

1
2
3
4
5
6
7
8
9

По умолчанию строки растягиваются на всю поперечную ось

align‑content: space‑around

1
2
3
4
5
6
7
8
9

Строки равномерно распределены

align‑content: space‑between

1
2
3
4
5
6
7
8
9

Первая и последняя строки отжаты к краям, оставшееся место делится поровну

align‑content: flex‑start

1
2
3
4
5
6
7
8
9

Строки прижаты к началу поперечной оси

align‑content: center

1
2
3
4
5
6
7
8
9

Строки прижаты к центру поперечной оси

align‑content: flex‑end

1
2
3
4
5
6
7
8
9

Строки прижаты к концу поперечной оси

В многострочных контейнерах за выравнивание строк на поперечной оси отвечает свойство align-content

align‑content: stretch

1
2
3
4
5
6
7
8
9

По умолчанию строки растягиваются на всю поперечную ось

align‑content: space‑around

1
2
3
4
5
6
7
8
9

Строки равномерно распределены

align‑content: space‑between

1
2
3
4
5
6
7
8
9

Первая и последняя строки отжаты к краям, оставшееся место делится поровну

align‑content: flex‑start

1
2
3
4
5
6
7
8
9

Строки прижаты к началу поперечной оси

align‑content: center

1
2
3
4
5
6
7
8
9

Строки прижаты к центру поперечной оси

align‑content: flex‑end

1
2
3
4
5
6
7
8
9

Строки прижаты к концу поперечной оси

Скрыто 112 разворотов