17. contacts.html — страница контактов
Короткая страница. По скелету — та же схема, что у предыдущих: partials, SSI-инклюды, кнопка «Наверх», два скрипта. Особенность — кликабельные ссылки tel: и mailto: и двухколоночная раскладка через собственный класс .contacts-grid.
Появляется Секция 6 в style.css — она обслуживает только эту страницу. Новые классы: .contacts-grid, .contacts-block, .contacts-line, .contacts-note, .contacts-requisites. Ни на одной другой странице сайта они не используются.
Уникальные мета
contacts.html — уникальные мета<title>Контакты – Ефимов Андрей Михайлович</title>
<meta name="description" content="Свяжитесь с экспертом по безопасности для консультации." />
<meta property="og:title" content="Контакты – Ефимов Андрей Михайлович" />
<meta property="og:description" content="Свяжитесь с экспертом по безопасности для консультации." />
<meta property="og:url" content="https://secserpr.ru/contacts.html" />
Технические детали:
- title и og:title совпадают полностью.
- description и og:description тоже совпадают — расхождения нет (как на
projects.htmlиprivacy.html). - og:url — конкретный URL
contacts.html. - meta robots отсутствует — страница индексируется.
Скелет страницы
Между header и footer — одна секция. Внутри — заголовок, двухколоночная сетка и CTA-блок.
<body>
<div class="container">
<header class="header">
SSI: header.html
SSI: nav.html
</header>
<section>
h2 Контакты
div.contacts-grid
div.contacts-block (левая — связь)
p.contacts-line (тел)
p.contacts-line (почта)
p.contacts-note
div.contacts-block (правая — реквизиты)
p strong Реквизиты
p.contacts-requisites
div.cta-block
</section>
SSI: footer.html
</div>
button#scrollToTopBtn
script.js
scroll-top.js
</body>
Заголовок секции
contacts.html — h2<section>
<h2>Контакты</h2>
<div class="contacts-grid">
...
</div>
h2 без класса — стили из правила для тега. Никаких вводных абзацев: сразу к делу.
Двухколоночная раскладка .contacts-grid
CSS (Секция 6 в style.css):
.contacts-grid {
display: flex;
flex-wrap: wrap;
gap: 40px;
justify-content: space-between;
}
Технические детали:
- display: flex — раскладка в строку.
- flex-wrap: wrap — если блоки не помещаются, они перенесутся на следующую строку.
- gap: 40px — промежуток между колонками. Больше, чем у тарифных карточек (25px) — здесь блоки содержательно разные, нужно визуальное разделение.
- justify-content: space-between — левый блок к левому краю, правый — к правому.
Блок .contacts-block
style.css — .contacts-block
.contacts-block {
min-width: 250px;
flex: 1;
}
Два свойства — и работает адаптив без медиа-запроса.
- min-width: 250px — блок не может быть уже 250 пикселей. Если сумма двух блоков +
gapбольше ширины контейнера — второй блок переносится на следующую строку. На узком экране блоки встают друг под друга. - flex: 1 — сокращённая запись
flex-grow: 1; flex-shrink: 1; flex-basis: 0%. Блок растягивается на всё доступное место. Два блока делят строку поровну.
Адаптив здесь не требует медиа-запроса. Блоки сами перестраиваются, когда перестают помещаться. Это называется intrinsic responsive design — самоадаптивная вёрстка. Такой приём работает надёжнее медиа-запросов: не нужно угадывать контрольную точку.
Левая колонка: как связаться
contacts.html — левая колонка<div class="contacts-block">
<p class="contacts-line">
📞 Телефон: <a href="tel:+79944325740">+7 994 432 57 40</a>
</p>
<p class="contacts-line">
✉️ E-mail: <a href="mailto:9944325740@mail.ru">9944325740@mail.ru</a>
</p>
<p class="contacts-note">Свяжитесь со мной – я отвечу в течение часа.</p>
</div>
Кликабельные ссылки
Два специальных протокола:
- tel:+79944325740 — на мобильном при клике открывается звонилка с уже набранным номером. На компьютере — может открыть Skype, FaceTime или другое приложение.
- mailto:9944325740@mail.ru — открывает почтовый клиент с адресом в поле «Кому».
Обратите внимание на формат: в href нет пробелов и дефисов — +79944325740. А в видимом тексте — с пробелами: «+7 994 432 57 40». Так надёжнее: некоторые системы не распознают tel: с пробелами.
Класс .contacts-line
style.css — .contacts-line
.contacts-line {
font-size: 1.2rem;
font-weight: 500;
}
.contacts-line a {
color: #2b6f9c;
text-decoration: none;
}
.contacts-line a:hover {
text-decoration: underline;
}
- font-size: 1.2rem — крупнее основного текста. Контакты должны читаться сразу.
- font-weight: 500 — средняя жирность. Тот же вес, что у заголовков h2-h4.
- Ссылка внутри — синяя, без подчёркивания, но подчёркивается при наведении. Приём «сдержанной ссылки», знакомый по другим страницам.
Класс .contacts-note
style.css — .contacts-note
.contacts-note {
font-weight: 300;
color: #4d6885;
}
Тонкий (300), приглушённый. Визуально «тише» основных строк. Подсказка под контактами.
Emoji в контактах
📞 (U+1F4DE) и ✉️ (U+2709 + U+FE0F). Это Unicode-символы прямо в тексте. Тот же приём, что в заголовках карточек projects.html.
Правая колонка: реквизиты
contacts.html — правая колонка<div class="contacts-block">
<p><strong>Реквизиты:</strong></p>
<p class="contacts-requisites">
ИП Ефимов Андрей Михайлович<br />
ИНН 780519548222 / ОГРНИП 324784700301772<br />
Р/с 40802810220001003235<br />
ООО "Банк Точка"<br />
БИК 044525104, ИНН банка 9721194461<br />
Кор/счёт 30101810745374525104
</p>
</div>
Заголовок «Реквизиты:»
Отдельный p с strong внутри. Не h3, не h4. Технически допустимо: это не заголовок раздела, а метка внутри блока. Могли бы использовать h4, но тогда семантика требовала бы подзаголовка в левой колонке тоже. Проще — strong.
Класс .contacts-requisites
style.css — .contacts-requisites
.contacts-requisites {
font-size: 0.95rem;
}
Одно свойство: чуть меньше основного текста. Реквизиты — служебная информация, не должны доминировать.
Теги <br />
Шесть переносов строк внутри одного p. Тот же приём, что в footer.html: каждая строка реквизитов заканчивается <br />.
Почему не ul со списком? Потому что реквизиты — не список элементов, а единый блок текста. Читается как адрес на конверте: несколько строк, одна за другой.
Те же реквизиты есть в footer.html и в offer.html. На contacts.html они отличаются: вместо полного адреса банка — только БИК и корсчёт. Это осознанное сокращение: на странице контактов достаточно ключевого, полные реквизиты — в футере.
CTA-блок
contacts.html — CTA<div class="cta-block">
<strong>Для оперативной связи</strong><br />
оставьте заявку – я перезвоню вам в течение 15 минут.
</div>
Тот же .cta-block, что на главной, «Услугах» и в КП. Стили не менялись. Стоит после .contacts-grid, внутри той же секции.
Сравнение по классам
Страницы сайта — кто что использует index serv about proj offer contacts
------------------------ ----- ---- ----- ---- ----- --------
секций 3 1 2 1 1 1
.grid-2 - + - - - -
.grid-3 - - - + + -
.grid-4 - - + - - -
.contacts-grid - - - - - +
.contacts-block - - - - - +
.contacts-line - - - - - +
.contacts-note - - - - - +
.contacts-requisites - - - - - +
.cta-block + + - - + +
.highlight-box - - + - + -
.price-* - - - - + -
.legal-note - - - - + -
Что видно из таблицы:
- Секция 6 в style.css обслуживает только эту страницу. Как Секция 10 — только
offer.html. - По скелету
contacts.htmlближе кservices.html: одна секция, одинh2,.cta-blockв конце. - По содержимому — ближе к
offer.html: там тоже была «широкая» страница с несколькими блоками. - Адаптив без медиа-запроса — только на этой странице.
.contacts-block { min-width: 250px; flex: 1 }сам перестраивает колонки.
Итог
- Скелет — как у эталона: partials, SSI-инклюды, кнопка «Наверх», два скрипта.
- Уникальные мета — пять строк.
descriptionиog:descriptionсовпадают. - Одна секция с заголовком, двухколоночной сеткой и CTA.
- Новые классы:
.contacts-grid,.contacts-block,.contacts-line,.contacts-note,.contacts-requisites. Все — из Секции 6style.css. - Кликабельные ссылки
tel:иmailto:— единственная страница сайта, где они есть. - Emoji 📞 и ✉️ — вторая страница (после
projects.html) с emoji в тексте. - Адаптив без медиа-запроса — трюк с
min-width: 250px+flex: 1. Уникально для сайта. - Реквизиты сокращены: без юр. адреса банка (он есть в
footer.html).
Следующий раздел — privacy.html. Юридический документ. Короткая страница: одна секция, два абзаца .text-block и одна выноска .highlight-box.