Верстаем статью в ХТМЛ за 7 шагов
У вас всё получится.
В этой статье мы сверстаем простую ХТМЛ-страницу. Это пригодится, если вы студент школы редакторов и вам через 2 недели сдавать курсовую работу. Хочется сделать круто, во всём разобраться, а собирать статью в конструкторе нет желания.
Мы не будем останавливаться подробно на каждом теге, классе, стиле. Если вы до этого ни разу не верстали веб-документы — просто повторяйте шаги и у вас всё получится.
Это учебная статья. В ней нет оригинальных дизайнерских решений и версии для мобильных. Основная задача — показать, что вёрстка это не злобный крокодил, а логичный и доступный инструмент.
Легенда
К нам обратились ребята из Бюро Горбунова с просьбой сделать обучающую статью для студентов. Дедлайн через 3 дня.
За 2 дня мы составили структуру, написали текст и подготовили иллюстрации, осталась вёрстка. Завтра дедлайн и нам надо за один вечер собрать статью в ХТМЛ.
Для работы подойдет любой редактор кода, мы используем Sublime Text или VS Сode.
Готовим шаблон
Начнем с пустого шаблона ХТМЛ-документа. Сразу разметим, где будут стили, а где — текст статьи. Это поможет не перепутать, что и куда писать. Общий код шаблона страницы будет выглядеть так:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Как подготовиться к работе над курсовой</title>
<style>
<!-- здесь будут стили !-->
</style>
</head>
<body>
<!-- здесь будет текст статьи !-->
</body>
</html>
На следующем шаге настроем типографику — выберем шрифт, кегль, интерлиньяж.
Зададим отступы слева и справа — это похоже на школьную тетрадь, где с одной стороны поля, а с другой — отступ в пару клеток.
Пропишем стили для флекс-контейнера — это этажи и ячейки, внутри которых будет текст и иллюстрации.
Вот что у нас получилось:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Как подготовиться к работе над курсовой</title>
<style>
/*Настраиваем типографику*/
:root {
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 1.2em;
line-height: 1.4em;
box-sizing: border-box;
}
h1 {
font-size: 2.25rem;
line-height: 1.3em;
font-weight: bold;
}
/*Настраиваем основную колонку для статьи*/
.conteiner{
padding-right: 20px;
padding-left: 20px;
margin-left: 5em;
margin-right: 5em;
}
/*row — флекс-контейнер, этаж сетки*/
.row {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: nowrap;
margin-bottom: 20px;
}
/*col-1 — основная колонка текста*/
.col-1 {
flex-basis: 66.6%;
max-width: 66.6%;}
/*col-2 — колонка на полях*/
.col-2{
flex-basis: 33.3%;
max-width: 33.3%;
}
</style>
</head>
<body>
<!-- здесь будет текст статьи !-->
</body>
</html>
Этаж с главной иллюстрацией
Создадим первый этаж статьи после открывающего тега <body>
:
<body>
<article class="conteiner">
<div class="row">
<!-- здесь будет иллюстрация !-->
</div>
Мы заранее подготовили все иллюстрации, знаем их размер, место и где они должны быть в статье.
Чтобы вставить иллюстрацию, надо добавить тег <img src="имя картинки">
. Если картинки лежат в отдельной папке — указываем адрес и имя картинки через /
<img src="имя папки/имя картинки">
.
В нашем случае тег будет выглядеть так:
<img class="logo" src="i/first.png">
По умолчанию браузер показывает картинки в полном размере, если картинка больше — это выглядит некрасиво. Добавим в стили ограничение на размер картинки, чтобы она не вылезала за границы блока и нижний отступ. Этот код нужно разместить между тегами <style>
и </style>
:
img{max-width: 100%;}
.logo{
max-width: 68%;
margin-bottom: 15px;
}
Посмотрим, как это выглядит в браузере:
Заголовок, лид, фото автора
Этот и последующие этажи будем собирать по такой структуре:
<div class="row">
<div class="col-1">
<!-- основная колонка статьи !-->
</div>
<div class="col-2 sidenote">
<!-- колонка на полях !-->
</div>
</div>
Добавим заголовок, лид-абзац, а фото автора разместим на полях. Фото можно заменить на фактоид, если в вашей статье нет ни того ни другого — удалите содержимое колонки на полях.
Чтобы добавить заголовок, используем тег <h1>...</h1>
, абзац <p>...</p>
, картинку — уже знакомый тег <imd src="имя папки/имя картинки">
. Подпись к картинке добавляем тегом <p>...</p>
.
<div class="row">
<div class="col-1">
<h1>...</h1>
<p>...</p>
</div>
<div class="col-2 sidenote author">
<imd src="имя папки/имя картинки">
<p>...</p>
</div>
</div>
По умолчанию у каждого тега есть свои отступы. Чтобы пододвинуть подпись ближе к картинке, добавим тегу <p>
отрицательный отступ: style="margin-top: -5px;"
и стили для фото автора и заметок на полях:
.author img{
width: 75px;
height: 75px;
}
.sidenote{
padding-left: 25px;
}
.sidenote p, a{
font-size: 14px;
}
Собираем:
<div class="row">
<div class="col-1">
<h1>Как подготовиться к работе над курсовой</h1>
<p>На 15-ой неделе всем студентам школы редакторов ...</p>
<p>Чтобы уменьшить количество тревожности ...</p>
</div>
<div class="col-2 sidenote author">
<img style="margin-top: 55px;" alt="фото автора" src="i/anton.png">
<p style="margin-top: -5px;">Антон Кошуба</p>
</div>
</div>
В браузере:
Боевой модуль: подзаголовок, абзац, иллюстрация, заметка на полях
На этом этаже создадим основной модуль статьи: подзаголовок, абзац, иллюстрацию, заметку на полях. Если для вашей статьи нужно несколько таких этажей, копируйте блоки и заполняйте содержимым.
Структура будет такой:
<h2>....</h2>
— подзаголовок,
<p>...</p>
— абзац,
<imd src="имя папки/имя картинки">
— иллюстрация,
<p>...</p>
— подпись под иллюстрацией.
Для заметки на полях возьмем тег <p>...</p>
и добавим к нему ссылку:
<p>... <a href="адрес ссылки"> текст ссылки </a></p>
По умолчанию заметки прибиваются к верхнему краю этажа. Чтобы поставить заметку ниже, используем свойство <p style="padding-top: 83px;">... </p>
<div class="row">
<div class="col-1">
<h2>Перечитать лекции</h2>
<p>Если кратко — за 14 недель в Бюро дают очень много материала.</p>
<p>Так выглядит первая неделя в учебном кабинете студента:</p>
<img alt="расписание на первую неделю" src="i/week.png">
<p class="caption">Все лекции есть в видео и текстовом вариантах</p>
</div>
<div class="col-2 sidenote">
<p style="padding-top: 83px;">Артемий Лебедев. <a class="link" href="https://www.artlebedev.ru/kovodstvo/sections/136/">Теория близости</a></p>
</div>
</div>
Добавим стили для подписи и ссылки:
/*Настраиваем вид и поведение ссылок при наведении*/
a.link {
color: #5d91c2;
text-decoration: none;
border-bottom: 1px solid #5d91c2;
transition: 0.3s ease-out;
}
a:hover {
color: #f06d41;
text-decoration: none;
border-color: #f06d41;
}
/*Задаем типографику подписи под иллюстрацией*/
p.caption{
font-size: 14px;
line-height: 18px;
margin-top: 0px;
}
В браузере:
Кликабельный фактоид и иллюстрация
Создадим следующий этаж статьи. Добавим подзаголовок <h2>
, абзац <p>
, иллюстрацию <img>
.
Фактоид сделаем картинкой, после нажатия на которую откроется сайт советов Бюро. Для этого обернем тег <img>
в тег <a>
<a href="адрес ссылки"> <imd src="имя папки/имя картинки"> </a>
Чтобы фактоид и иллюстрация выделялись при наведении мышкой, добавим стили:
a img {
color: #5d91c2;
text-decoration: none;
border: none;
transition: 0.3s ease-out;
}
a:hover img {
color: #f06d41;
text-decoration: none;
border-color: #f06d41;
opacity: 0.8;
border: solid .1px;
}
Аналогично поступим с иллюстрацией в конце этажа.
Собираем
<div class="row">
<div class="col-1">
<h2>Читать советы</h2>
<p>Если лекций недостаточно — ищите ответ в «Советах». На сайте есть удобный поиск — достаточно ввести запрос и выбрать подходящий совет.</p>
<a href="https://bureau.ru/bb/soviet/found/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D1%8C%D1%8F%D0%B6"><img alt="231 совет на запрос интерлиньяж" src="i/inter.png"></a>
<p class="caption">На запрос «Интерлиньяж» найден 231 совет</p>
</div>
<div class="col-2 sidenote">
<a href="https://bureau.ru/soviet/"><img alt="4245 советов на сайте бюро" src="i/sovet.png" style="margin-top: 50px;"></a>
<p style="margin-top: 178px;">Михаил Нозик. <a class="link" href="https://bureau.ru/soviet/20191002/">Влезание в интерлиньяж</a></p>
</div>
</div>
В браузере:
Абзац с подзаголовками в подбор
Подзаголовком в подбор называют первое предложение абзаца. Его используют, чтобы избежать лишней вложенности и выделить смысловую часть абзаца.
Чтобы сделать подзаголовок в подбор, выделим первое предложение абзаца жирным, для этого используем тег <b>...</b>
Получим конструкцию <p><b>...</b>.......</p>
и добавим ее в этаж статьи:
<div class="row">
<div class="col-1">
<h2>Начните прямо сейчас</h2>
<p><b>Не откладывайте на последний день.</b> Иногда бывает так что ...</p>
<p><b>Найдите источник информации.</b> Любая статья начинается с...</p>
<p><b>Выпишите интересные темы.</b> Когда вы определились ...</p>
</div>
</div>
В браузере:
Плашка
В конце статьи сделаем цветную плашку с основными мыслями или важным посланием автора. Задача плашки — привлечь внимание и что-то сказать. Ее не обязательно делать в конце статьи.
Создадим этаж и добавим туда маркерованый список:
<div class="row">
<div class="col-1 end">
<h2>...</h2> — подзаголовок плашки
<ul>
<li>...</li> — элемент списка
<li>...</li> — элемент списка
<li>...</li> — элемент списка
</ul>
</div>
</div>
Чтобы убрать буллиты и отступ, добавим стили:
/*Убираем буллиты и отступ слева*/
ul {
list-style: none inside;
padding-left: 0;
}
/*Задаем отступы между элементами перечня*/
* + li {
margin-top: .4rem;
}
Покрасим плашку в нежно-голубой:
/*Настраиваем плашку*/
.end{
background-color:#deefff;
border-radius: 15px;
margin-bottom: 30px;
padding: 1em;
}
Собираем:
<div class="row">
<div class="col-1 end">
<h2>Что дальше</h2>
<ul>
<li>Перечитывайте и пересматривайте лекции</li>
<li>Читайте советы</li>
<li>Смотрите разборы работ предыдущих потоков</li>
<li>Находите полезное</li>
<li>Делайте кайфовое</li>
</ul>
</div>
</div>
В браузере:
Вот что получилось
Сравним нашу статью с макетом.
Готовый код
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Как подготовиться к работе над курсовой</title>
<style>
/*Настраиваем типографику*/
:root {
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 1.2em;
line-height: 1.4em;
box-sizing: border-box;
}
h1 {
font-size: 2.25rem;
line-height: 1.3em;
font-weight: bold;
}
/*Настраиваем основную колонку для статьи*/
.conteiner{
padding-right: 20px;
padding-left: 20px;
margin-left: 5em;
margin-right: 5em;
}
/*row — флекс-контейнер, этаж сетки*/
.row {
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: nowrap;
margin-bottom: 20px;
}
/*col-1 — основная колонка текста*/
.col-1 {
flex-basis: 66.6%;
max-width: 66.6%;}
/*col-2 — колонка на полях*/
.col-2{
flex-basis: 33.3%;
max-width: 33.3%;
}
img{max-width: 100%;}
.logo{
max-width: 68%;
margin-bottom: 15px;
}
.author img{
width: 75px;
height: 75px;
}
.sidenote{
padding-left: 25px;
}
.sidenote p, a{
font-size: 14px;
}
/*Настраиваем вид и поведение ссылок при наведении*/
a.link {
color: #5d91c2;
text-decoration: none;
border-bottom: 1px solid #5d91c2;
transition: 0.3s ease-out;
}
a:hover {
color: #f06d41;
text-decoration: none;
border-color: #f06d41;
}
/*Задаем типографику подписи под иллюстрацией*/
p.caption{
font-size: 14px;
line-height: 18px;
margin-top: 0px;
}
a img {
color: #5d91c2;
text-decoration: none;
border: none;
transition: 0.3s ease-out;
}
a:hover img {
color: #f06d41;
text-decoration: none;
border-color: #f06d41;
opacity: 0.8;
border: solid .1px;
}
/*Настраиваем плашку*/
.end{
background-color:#deefff;
border-radius: 15px;
margin-bottom: 30px;
padding: 1em;
}
/*Убираем буллиты и отступ слева*/
ul {
list-style: none inside;
padding-left: 0;
}
/*Задаем отступы между элементами перечня*/
* + li {
margin-top: .4rem;
}
</style>
</head>
<body>
<article class="conteiner">
<div class="row">
<img class="logo" src="i/first.png">
</div>
<div class="row">
<div class="col-1">
<h1>Как подготовиться к работе над курсовой</h1>
<p>На 15-ой неделе всем студентам школы редакторов открываются темы курсовой работы. На всё про всё дается две недели.</p>
<p>Чтобы уменьшить количество тревожности в этом мире, я подготовил простые советы, которые помогут при подготовке к работе над курсовой.</p>
</div>
<div class="col-2 sidenote author">
<img style="margin-top: 55px;" alt="фото автора" src="i/anton.png">
<p style="margin-top: -5px;">Антон Кошуба</p>
</div>
</div>
<div class="row">
<div class="col-1">
<h2>Перечитать лекции</h2>
<p>Если кратко — за 14 недель в Бюро дают очень много материала.</p>
<p>Так выглядит первая неделя в учебном кабинете студента:</p>
<img alt="расписание на первую неделю" src="i/week.png">
<p class="caption">Все лекции есть в видео и текстовом вариантах</p>
</div>
<div class="col-2 sidenote">
<p style="padding-top: 83px;">Артемий Лебедев. <a class="link" href="https://www.artlebedev.ru/kovodstvo/sections/136/">Теория близости</a></p>
</div>
</div>
<div class="row">
<div class="col-1">
<h2>Читать советы</h2>
<p>Если лекций недостаточно — ищите ответ в «Советах». На сайте есть удобный поиск — достаточно ввести запрос и выбрать подходящий совет.</p>
<a href="https://bureau.ru/bb/soviet/found/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D1%8C%D1%8F%D0%B6"><img alt="231 совет на запрос интерлиньяж" src="i/inter.png"></a>
<p class="caption">На запрос «Интерлиньяж» найден 231 совет</p>
</div>
<div class="col-2 sidenote">
<a href="https://bureau.ru/soviet/"><img alt="4245 советов на сайте бюро" src="i/sovet.png" style="margin-top: 50px;"></a>
<p style="margin-top: 178px;">Михаил Нозик. <a class="link" href="https://bureau.ru/soviet/20191002/">Влезание в интерлиньяж</a></p>
</div>
</div>
<div class="row">
<div class="col-1">
<h2>Начните прямо сейчас</h2>
<p><b>Не откладывайте на последний день.</b> Иногда бывает так что на последние две недели учебы сваливается много задач: сдать финальные тесты, работа по дому, дедлайны на работе. Работать над курсовой в таком состоянии трудно, постоянно что-то отвлекает. Чтобы этого избежать начните думать о курсовой с первой недели учебы.</p>
<p><b>Найдите источник информации.</b> Любая статья начинается со сбора матриала. Посмотрите вокруг, наверняка у вас уже есть несколько знакомых в разных сферах или жизненный опыт, на основе которого можно написать статью.</p>
<p>Например, вы разбираетесь в кофе, работали бариста и можете часами рассказывать про отличия арабики от робусты. Или вы мастерски выращиваете герань и можете дать польезные советы начинающим садоводам.</p>
<p><b>Выпишите интересные для вас темы.</b> Когда вы определились с источниками информации — выпишите темы, на которые хотите написать статью. Необязательно формулировать тему как что-то уже утвержденное, достаточно просто идеи: как верстать статю в хтмл, как выбрать миксер для большой семьи.</p>
</div>
</div>
<div class="row">
<div class="col-1 end">
<h2>Что дальше</h2>
<ul>
<li>Перечитывайте и пересматривайте лекции</li>
<li>Читайте советы</li>
<li>Смотрите разборы работ предыдущих потоков</li>
<li>Находите полезное</li>
<li>Делайте кайфовое</li>
</ul>
</div>
</div>
</body>
</html>
Что дальше
- Скопируйте код;
- Замените текст и иллюстрации на свои;
- Или внесите изменения в шаблон на свой вкус;
Как бесплатно разместить статью в интернете, расскажу в следующем выпуске.
Научиться профессиональной вёрстке можно в «Яндекс Практикуме»
Курс «Профессиональная вёрстка на HTML и CSS»