15. projects.html — страница кейсов
Третья «дочерняя» страница. По скелету — та же схема, что у services.html и about.html: шапка из partials, SSI-инклюд стилей, уникальные мета, содержимое между шапкой и футером, кнопка «Наверх», два скрипта.
Класс .grid-3 — сетка на три колонки. В предыдущих разделах он упоминался в CSS, но на страницах ещё не использовался: были .grid-2 (services) и .grid-4 (about). Здесь он выходит на сцену впервые.
Уникальные мета
projects.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/projects.html" />
Технические детали:
- title и og:title совпадают полностью.
- description и og:description тоже совпадают — на этой странице расхождения нет (в отличие от
about.html). - og:url — конкретный URL
projects.html. - meta robots отсутствует — страница индексируется.
Скелет страницы
Между header и footer — одна секция. Внутри — заголовок, вводный абзац и сетка карточек.
<body>
<div class="container">
<header class="header">
SSI: header.html
SSI: nav.html
</header>
<section>
h2
p.text-block
div.grid-3
div.card × 3
h4
p (strong Проблема)
p (strong Решение)
p (strong Результат)
</section>
SSI: footer.html
</div>
button#scrollToTopBtn
script.js
scroll-top.js
</body>
Секция: заголовок и вводный абзац
projects.html — начало секции<section>
<h2>Кейсы</h2>
<p class="text-block">Несколько примеров из практики
(без раскрытия имён клиентов).</p>
<div class="grid-3">
...
</div>
</section>
Технические детали:
- h2 без класса — стили из правила для тега. Синяя полоса слева, как у всех страниц.
- p.text-block — единственный абзац-вступление. Красная строка, выравнивание по ширине.
- Тот же приём, что в
services.html. Наabout.htmlвторая секция открываласьh3.section-subtitle— здесь подзаголовка нет.
Сетка .grid-3
CSS для класса (Секция 4 в style.css):
.grid-2, .grid-3, .grid-4 {
display: grid;
gap: 25px;
margin-top: 15px;
}
.grid-3 { grid-template-columns: 1fr 1fr 1fr; }
Три колонки по одной фракции. Три карточки заполняют ровно один ряд.
Сетка .grid-3 в действии+-------------------------------------------+
| .grid-3 |
| |
| +----------+----------+----------+ |
| | card 1 | card 2 | card 3 | |
| | 500+ | 200 | Торговая| |
| | сотруд. | сотруд. | сеть | |
| +----------+----------+----------+ |
| |
+-------------------------------------------+
В медиа-запросе @media (max-width: 768px) правило .grid-3 { grid-template-columns: 1fr } переопределяет три колонки на одну. Карточки встают в столбик.
Карточка кейса
Одна карточка состоит из четырёх элементов: h4 и три p.
<div class="card">
<h4>🏭 Производственный холдинг, 500+ сотрудников</h4>
<p><strong>Проблема:</strong> частые блокировки расчётных счетов...</p>
<p><strong>Решение:</strong> аудит платежей, разработка регламента...</p>
<p><strong>Результат:</strong> за 6 месяцев – 0 блокировок, снижение...</p>
</div>
Технические детали:
- h4 — заголовок карточки. Правило
.card h4 { margin-top: 0 }снимает верхний отступ, чтобы заголовок не «уезжал» вниз от рамки карточки. - emoji в h4 — 🏭 (U+1F3ED), 💻 (U+1F4BB), 🛒 (U+1F6D2). Это Unicode-символы прямо в тексте, не картинки. Обратите внимание: у
about.htmlиservices.htmlв заголовках emoji нет — здесь они появляются впервые. - Три p подряд — каждый начинается с
<strong>Метка:</strong>и продолжается текстом. Метки одинаковые у всех трёх карточек: «Проблема:», «Решение:», «Результат:» — это визуальный шаблон, единый для страницы. - Стиль p внутри карточки —
.card p { font-size: 0.98rem }. Чуть меньше основного текста. Никакихtext-indent— потому что у карточек нет класса.text-block. - Тире в тексте — «–» (en dash), а не дефис. Символ, а не минус.
p с strong, а не ul со списком
Логически «Проблема / Решение / Результат» — это структурированный список. Но визуально список ul дал бы маркеры-точки и отступ слева. А нам нужен плотный абзац с выделенной меткой. Поэтому — p + strong. Технически приемлемо, семантически — не идеально. Но это осознанный выбор ради визуальной компактности.
Комментарий внутри секции
В реальном файле перед каждой карточкой (точнее — перед всей сеткой) стоит блок-комментарий:
projects.html — комментарий в секцииБЛОК: КЕЙСЫ — 3 карточки в сетке 3 колонки
ОТВЕЧАЕТ ЗА: показать реальные результаты работы.
ВЗАИМОДЕЙСТВУЕТ С: .grid-3 -> на мобильных 1 колонка.
ВАЖНО: имена клиентов не раскрываем — только типы компаний.
Это стандартная «мини-шапка секции» по проекту. Обратите внимание на строку «имена клиентов не раскрываем» — это не просто пояснение, а правило безопасности. Если кто-то будет редактировать страницу, комментарий напомнит: здесь нельзя называть настоящие компании.
Сравнение четырёх страниц
Полная таблица по факту — по реальному коду четырёх страниц.
index vs services vs about vs projects index services about projects
----------------------- ----- -------- ----- --------
секций на странице 3 1 2 1
.grid-2 - + - -
.grid-3 - - - +
.grid-4 - - + -
.card с h4 - + - +
.card с .badge - - + -
.hero-title + - - -
.hero-lead + - - -
.text-block + + + +
.section-subtitle + - + -
.cta-block + + - -
.highlight-box - - + -
emoji в заголовках - - - +
Что видно из таблицы:
- По скелету
projects.htmlближе всего кservices.html: одна секция,h2, вводный абзац, сетка карточек, конец. Отличие — сетка.grid-3вместо.grid-2и CTA-блока нет. - По карточкам — ближе к
services.html: сh4, без бейджа. - По цветовому акценту — emoji появляются впервые именно здесь.
Итог
- Скелет — как у эталона: partials, SSI-инклюды, кнопка «Наверх», два скрипта.
- Уникальные мета — пять строк, включая
og:url. - Одна секция:
h2+p.text-block+.grid-3. - Новый класс на странице —
.grid-3(три колонки). - Карточки с
h4, как на services, но текст разбит на три абзаца с выделенными метками черезstrong. - В заголовках карточек — emoji. Единственная страница сайта с таким приёмом.
- Адаптив — медиа-запрос переводит
.grid-3в одну колонку. - Нет
.cta-block, нет.highlight-box, нет.section-subtitle.
Следующий раздел — offer.html. Самая длинная страница сайта: шесть разделов внутри одной секции, тарифные карточки с новыми классами .price-* и юридическая оговорка .legal-note. Плюс — Секция 10 в style.css, которая используется только здесь.