Финал: собираем портфолио и идём работать
Многостраничный сайт-портфолио, публикация за десять минут, что писать в резюме верстальщику и чему учиться дальше.
Что ты научишься делать
- Соберёшь портфолио, которое показывает мышление, а не только результат
- Выложишь сайт в интернет и получишь работающую ссылку
- Поймёшь, что писать в резюме и чему учиться после вёрстки
#Портфолио — это не галерея
Самая частая ошибка: страница со скриншотами и подписями «лендинг», «магазин». Такое портфолио ничего не сообщает — красивую картинку мог сделать кто угодно.
Работодателя интересует не результат, а как ты думаешь. Три проекта с разбором решений весят больше, чем десять скриншотов.
По каждой работе полезно ответить на четыре вопроса: что было задачей, какие решения принял и почему, с чем столкнулся, что сделал бы иначе.
Так не надо
<article class="work">
<img src="shot.jpg" alt="Лендинг">
<h3>Лендинг кофейни</h3>
<p>Адаптивная вёрстка, HTML, CSS</p>
</article>Перечисление технологий ничего не говорит: их знает каждый выпускник курсов. Непонятно, что именно ты решал.
Так надо
<article class="work">
<h3>Лендинг кофейни</h3>
<p class="work__task">Задача: страница записи на дегустацию,
срок — неделя.</p>
<p class="work__solve">Сложность была в карточках тарифов:
названия разной длины ломали ряд. Решил через subgrid
с запасным вариантом на флексах.</p>
<a href="…">Живая версия</a>
<a href="…">Код на GitHub</a>
</article>Видно задачу, конкретную трудность и осознанное решение с оглядкой на совместимость. Это и есть то, что оценивают.
#Структура сайта
Портфолио — это многостраничный сайт, а не одна длинная страница. Отдельная страница под каждый проект даёт две вещи: место для подробного разбора и ссылку, которую можно отправить точечно.
portfolio/ index.html обо мне + три работы карточками works/ landing.html разбор первого проекта dashboard.html shop.html about.html подробнее о себе и контакты styles/ main.css base/ layout/ components/ assets/ fonts/ img/#Публикация за десять минут
Сайт из статических файлов выкладывается бесплатно и без сервера. Два самых простых способа.
Заведи репозиторий
Создай на GitHub репозиторий и загрузи туда файлы портфолио. Через веб-интерфейс это делается перетаскиванием, командная строка не обязательна.
Включи GitHub Pages
В настройках репозитория раздел Pages, источник — ветка
main, папка корневая. Через минуту сайт доступен по адресу видаимя.github.io/portfolio.Или перетащи папку в Netlify
Ещё проще: на странице развёртывания Netlify перетащи папку с сайтом мышью. Ссылка появится сразу, без репозитория.
Проверь пути
На GitHub Pages сайт часто лежит в подпапке. Абсолютные пути вроде
/styles/main.cssсломаются — используй относительные.Подключи домен
Необязательно, но приятно. Своё имя в адресе стоит несколько сотен рублей в год и настраивается парой записей у регистратора.
#Как оформить код на GitHub
Ссылку на репозиторий откроют. Что там увидят — часть впечатления.
- Файл README. Что за проект, скриншот, ссылка на живую версию, как запустить. Пять строк лучше, чем ничего.
- Осмысленные коммиты. «Добавил карточки тарифов» вместо «фикс», «правки», «ещё раз».
- Никакого мусора. Папки редактора, системные файлы и черновики — в
.gitignore. - Понятная структура. Та самая, из сорокового урока.
# Лендинг кофейни «Полка»Страница записи на дегустацию. Чистые HTML и CSS, без библиотек.**Живая версия:** https://имя.github.io/coffee-landing## Что интересного- Карточки тарифов выровнены через subgrid, запасной вариант на флексах через @supports- Аккордеон вопросов на <details name> — без JavaScript- Тёмная тема на семантических токенах## ЗапускОткрыть index.html в браузере. Сборка не нужна.#Резюме верстальщика
Резюме читают меньше минуты. Работает конкретика, не прилагательные.
| Не работает | Работает |
|---|---|
| «Ответственный, обучаемый» | Ссылка на портфолио первой строкой |
| «Знаю HTML, CSS, немного JS» | «Семантическая вёрстка, Grid и Flexbox, адаптив от 320px, доступность по WCAG AA» |
| «Есть опыт вёрстки» | «Три проекта в портфолио: лендинг, дашборд, каталог» |
| Список из двадцати технологий | Пять, которыми реально пользуешься |
| «Опыт работы: нет» | «Учебные проекты с разбором решений — ссылки ниже» |
#Где брать практику
- Перевёрстывай существующие сайты. Возьми страницу, которая нравится, и собери сама. Сравнение с оригиналом покажет, где ты пошёл длинным путём.
- Бесплатные макеты. Дизайнеры выкладывают работы в общий доступ — там есть и мобильные версии, и состояния.
- Мелкие заказы у знакомых. Сайт для парикмахерской или частного мастера. Настоящее ограничение по срокам и живые правки — то, чего не даст учебный проект.
- Открытый код. Исправить опечатку в документации или починить контраст в чужом проекте — нормальный первый вклад.
- Собственные инструменты. Считалка, список дел, страница с рецептами. Такие проекты доводят до конца охотнее.
#Что учить дальше
Вёрстка — законченная профессия, но одна она ограничивает круг задач. Порядок, в котором обычно двигаются дальше.
| Что | Зачем | Когда браться |
|---|---|---|
| JavaScript | Всё, что нельзя сделать на CSS: данные, логика, взаимодействие | Сразу после вёрстки — самый естественный следующий шаг |
| Git глубже | Ветки, слияния, разрешение конфликтов | Параллельно, по мере надобности |
| Инструменты сборки | Сборка, оптимизация, современный синтаксис | Когда проект перерос статические файлы |
| Фреймворк | Vue, React или Svelte — для больших приложений | После уверенного JavaScript, не раньше |
| TypeScript | Типы, которые ловят ошибки до запуска | Когда проекты станут большими |
| Основы бэкенда | Понимать, откуда берутся данные | Когда захочется делать сайт целиком |
#Что ты теперь умеешь
Пятьдесят уроков позади. Стоит перечислить вслух, потому что через месяц это будет казаться самоочевидным.
Ты собираешь страницу с нуля: семантическая разметка, любая раскладка на флексах и гридах, адаптив от телефона до широкого экрана. Управляешь каскадом слоями, а не важностью. Делаешь состояния интерфейса без скриптов там, где это уместно, и понимаешь, где неуместно.
Знаешь, почему сайт тормозит и как это измерить. Понимаешь доступность не как список требований, а как работу с фокусом, ролями и объявлениями. Умеешь оценить цену техники: поддержку браузерами, производительность, сложность поддержки.
И главное — можешь объяснить любое своё решение. Это отличает верстальщика от человека, который копирует код с форумов.
#Курс по JavaScript
Он появится здесь же, отдельным разделом. Движок сайта с самого начала рассчитан на несколько курсов: прогресс будет считаться так же, уроки будут той же структуры, а начатое здесь не потеряется.
Пока его нет — лучшее, что можно сделать, это довести портфолио до состояния, за которое не стыдно, и выложить его в интернет. Ссылка работает лучше любого сертификата.
Где спотыкаются почти все
Портфолио из скриншотов без разбора
Почему Картинка не показывает мышление. Работодатель не понимает, что именно ты решал и почему.
Как надо На каждый проект: задача, трудность, решение, что сделал бы иначе.
Абсолютные пути на GitHub Pages
Почему Сайт лежит в подпапке — путь от корня ведёт в пустоту. Локально всё работает, после публикации стилей нет.
Как надо Только относительные пути внутри проекта.
Двадцать технологий в резюме
Почему Список, где половина видена один раз, вызывает недоверие ко всему остальному.
Как надо Пять, которыми пользуешься. Остальное — при случае в разговоре.
Фреймворк вместо языка
Почему Без понимания JavaScript работа сводится к копированию образцов, и любая нештатная ситуация ставит в тупик.
Как надо Сначала язык, потом надстройки над ним.
- Портфолио portfolio
- Набор работ с разбором решений, а не галерея скриншотов.
- Статический хостинг static hosting
- Публикация сайта из файлов без серверного кода: GitHub Pages, Netlify.
- Относительный путь relative path
- Адрес от текущего файла. Единственный безопасный вариант при публикации в подпапку.
- Открытый код open source
- Проекты с общедоступным кодом, куда можно вносить вклад.
Проверь себя
Картинку мог сделать кто угодно. Оценивают ход мысли и умение его объяснить.
Локально путь от корня работает, на Pages — нет. Внутри проекта нужны относительные пути.
Разные жанры показывают широту, разбор — глубину. Десять однотипных работ сообщают меньше.
Фреймворк — надстройка над языком. Без языка получается работа по образцу без понимания.
Резюме читают меньше минуты. Работает конкретика, а не прилагательные и не длина списка.
Задание
Карточка проекта для портфолио
Свёрстай карточку работы так, как её стоит показывать: заголовок, короткое описание задачи, разбор решения, две ссылки — на живую версию и на код.
Требования: article с семантической разметкой, у внешних ссылок rel="noopener" и target="_blank", у ссылок осмысленный текст (не «здесь» и не «подробнее»), видимая обводка фокуса.
Подсказка 1
Структура: h3, потом два абзаца — задача и разбор решения, потом блок со ссылками.
Подсказка 2
Ссылка: <a href="…" target="_blank" rel="noopener">Живая версия</a> — текст говорит, куда ведёт.
Подсказка 3
Фокус: .work a:focus-visible { outline: 3px solid #6544e0; outline-offset: 2px; }
Показать решение
<article class="work"> <h3 class="work__title">Лендинг кофейни</h3> <p class="work__task">Задача: страница записи на дегустацию, срок неделя, вся вёрстка без библиотек.</p> <p class="work__solve">Сложность была в карточках тарифов: названия разной длины ломали ряд кнопок. Сделал через subgrid с запасным вариантом на флексах — на старых браузерах кнопки просто прижаты вниз.</p> <p class="work__links"> <a href="https://example.com/coffee" target="_blank" rel="noopener">Живая версия</a> <a href="https://github.com/user/coffee" target="_blank" rel="noopener">Код на GitHub</a> </p></article>.work { display: grid; gap: 10px; max-width: 420px; padding: 18px; background: #f5f5fa; border-radius: 14px;}.work__title { margin: 0; font-size: 18px; }.work p { margin: 0; font-size: 14px; color: #5b6070; }.work__links { display: flex; gap: 12px; }.work__links a { color: #6544e0; font-weight: 600; font-size: 14px; }.work a:focus-visible { outline: 3px solid #6544e0; outline-offset: 2px; border-radius: 4px;}