Как сверстать макет. Пошаговый план
- 6 октября 2022
Вы открыли макет в Фигме и редактор кода. Сейчас расскажем, что нужно делать дальше, чтобы не впасть в прокрастинацию и всё сверстать.
Осмотрите макет
Зачем. Чтобы потом не отвлекаться от вёрстки.
Смотрите макет по принципу «Снаружи — внутрь» — двигаясь от крупных смысловых элементов к деталям дизайна. Чтобы было удобнее, сделайте дубликат макета в Фигме и пишите там заметки о том, что нашли.
Отметьте крупные смысловые блоки и разделы. Посмотрите на страницу и выделите крупные смысловые блоки. Базовая структура любого макета состоит из трех основных тегов:
<header>
— шапка сайта, одинаковая на всех страницах.<main>
— уникальный контент;<footer>
— подвал, одинаковый на всех страницах.
Теперь ищем смысловые разделы внутри этих блоков. Поможет схема:
Проанализируйте контент. Присмотритесь к тексту на макете, какую функцию он выполняет? Может быть то, что вы видите, это не текст, а кнопка или раскрывающиеся меню?
На этом этапе отметьте:
- Заголовок всего документа и заголовки смысловых разделов. Теги:
<h1>
-<h6>
. - Мелкие элементы в смысловых разделах. Это списки, таблицы, демо-материалы, параграфы и переносы, формы, цитаты, контактная информация и прогресс.
- Фразовые элементы. Изображения, ссылки, кнопки, видео, время и мелкие текстовые элементы.
Когда вы закончите работу, у вас в заметках будет готовая схема вёрстки и уже ничего не будет отвлекать вас от кода.
Настройте редактор кода и проект
Установите редактор Visual Studio Code (или любой другой), если ещё этого не сделали, и плагин editorconfig. Он помогает разным разработчикам писать код в проекте в одном стиле.
Структура проекта. Создайте папку и положите туда файл index.html, папку css с файлами style.css и normalize.css, а также папки для картинок и шрифтов. Получится так:
Разметка
Рабочую среду подготовили, приступаем к разметке.
- Создаём разметку страницы в файле index.html. Изображения пока не подключаем — этим займемся на этапе работы с графикой;
- Далее, в файле при помощи нужных тегов: прописываете весь текст, расставляете все ссылки и кнопки. Нужен только HTML-код, стили пока делать не нужно.
- Теперь определим ! DOCTYPE, укажем язык содержимого, кодировку и заголовок страницы во вкладке браузера.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Заголовок страницы</title>
</head>
<body>
</body>
</html>
Выделяем крупные смысловые блоки на каждой странице сайта. Это <header>
— шапка, <footer>
— подвал и <main>
— основное содержимое.
Размечаем в блоках крупные смысловые разделы. Выделяем главную навигацию <nav>
, секции через <section>
, смысловые разделы через <article>
и дополнительное содержимое через <nav>
.
Выделяем заголовок всего документа и заголовки смысловых разделов. Заголовок — это обманчиво простой тег. Главная проблема с заголовками такая: не всегда то, что кажется заголовком, им является.
Например, текст про дизайн-студию из Краснодара прикидывается заголовком, но на самом деле это не он:
Это само содержание, а не его резюме. Хорошим заголовком для этого блока был бы текст «О нас» или «О студии».
Размечаем мелкие элементы в смысловых разделах. Списки <ul>
и <ol>
, таблицы <table>
, демонстрационные материалы <figure>
, параграфы <p>
и переносы <br>
, формы <form>
, цитаты <blockquote>
, контактную информацию, прогресс и измерения.
Определить, какие теги использовать, можно методом исключения:
- Получилось найти самый подходящий смысловой тег — использовать его.
- Для потоковых контейнеров —
<div>
. - Для мелких фразовых элементов (слово или фраза) —
<span>
.
Размечаем фразовые элементы. Изображения <img>
, ссылки <a>
, кнопки <button>
, видео-контент <video>
, время <time>
, мелкие текстовые элементы <span>
, <b>
или <i>
.
Разметка в редакторе кода выглядит так:
А так проект выглядит в браузере:
Базовая стилизация
Начинается самое интересное — работа с внешним видом. Прописываем в style.css
базовые стили. Для крупных блоков пока ничего не делаем.
Этапы базовой стилизации
- Добавление классов в разметку;
- Подключение нестандартных шрифтов (локально или из сервиса);
- Подключение normalize.css (по желанию);
- Указываем параметры шрифта — название, размер, цвет, жирность;
- Указываем высоту строки;
- Описание фоновых параметров (фоновый цвет);
- Описание состояний интерактивных элементов, которые описаны в стайлгайде. На этом этапе задавайте только текстовые параметры и параметры фона;
- Все цвета вынесены в кастомные свойства в селектор
:root.
Пример проекта с базовой стилизацией:
Работа с графикой
Экспортируйте всю графику из макета в Figma и подключите её в разметке.
SVG-изображения рекомендуется собрать в спрайт и подключить первым элементом в body. Спрайт — это файл, который мы сшили из нескольких графических элементов, например, из иконок. Спрайты экономят запросы к серверу — с ними сайт работает и загружается быстрее. В спрайт сшивается и растровая, и векторная графика.
В папке вашего проекта подготовьте графику: подготовленные изображения разместите в подпапке img в папке проекта, чтобы у вас получилась примерно такая структура проекта:
project
| – css
| – fonts
| – img
| [ваши картинки]
| favicon.ico
| index.html
| catalog.html
Подключите контентные изображения в разметке. Фоновые и декоративные изображения пока подключать не нужно.
При подключении изображений используйте относительные адреса, обязательно укажите размер картинки без пикселей, а также alt. Например, так:
<img src="img/logo.png" width="100" height="50" alt="Девайс">
Подключите к проекту фавиконки. favicon.ico размером 32×32 положите в корень проекта и подключите в <head>
, остальные версии фавиконок делать не обязательно.
Пример проекта в котором подключена графика:
Построение сетки
Построение сеток производится в общем стилевом файле style.css.
При работе с созданием крупных структурных сеток, в вёрстке используется подход desktop-first, то есть сайт прежде всего должен корректно отображаться на больших разрешениях экрана.
Расположите элементы страницы по сетке в соответствии с макетом. Для удобства используйте один из следующих способов визуального выделения элементов:
- C помощью свойства
background-color
c разными цветами для разных блоков; - С помощью свойства
outline
(для удобства также можно использовать разные цвета). - Свойство
border
лучше не использовать, так как оно влияет на ширину блока и может что-нибудь сломать.
Пример проекта, где уже добавлены сетки:
Добавление декоративных элементов
На этом этапе добавляем мелкие сетки — например, для карточек товара. Подключаем кастомные шрифты и фоновые изображения. В конце оформляем остальные декоративные элементы, которые ещё не стилизовали раньше.
Пример готового проекта, где добавлены декоративные элементы:
Всё почти готово, осталась пара шагов.
Адаптивные сетки и декоративные элементы
Чтобы сделать хороший адаптивный сайт, нужно понимать много нюансов: как работают вьюпорт, медиавыражения, адаптивные картинки. Эту тему стоит разобрать отдельно, но если хотите, познакомьтесь с ней в блоге Академии.
Адаптивная графика
Ура! Мы и дошли до последнего пункта работы над проектом. Что нам осталось сделать?
- Подключаем в разметке и стилях адаптивные изображения для разных девайсов и экранов с разной плотностью пикселей;
- В HTML используем элемент
picture
, с помощью которого подключаем картинки для разных разрешений экрана, для экранов с разной плотностью пикселей, а также webp-варианты картинок для поддерживающих браузеров; - В CSS подключаем картинки для экранов с двухкратной плотностью пикселей и для разных разрешений с помощью медиа-выражений.
Пример готового проекта, где настроена адаптивная графика:
Вот мы и подошли к концу. Перед глазами готовый проект, ощущения радостные. Можно смело приступать к верстке нового макета. Ведь, чтобы научиться писать код — нужно писать код. Меньше сомнений — больше практики и всё получится.
Следующие шаги:
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше
Селектор потомков (пробел)
Селектор потомков в CSS используется для выбора элементов, которые являются потомками другого элемента в структуре документа. Этот селектор обозначается простым пробелом между двумя селекторами и позволяет применить стили к элементам, находящимся внутри других элементов, независимо от глубины их вложенности.
Пример использования селектора потомков:
article p {
color: #333;
line-height: 1.6;
}
В данном примере все абзацы (<p>
), которые находятся внутри элемента <article>
, будут окрашены в темно-серый цвет и получат межстрочный интервал в полтора размера шрифта. Селектор потомков позволяет легко управлять стилем конкретных элементов, сохраняя при этом общую структуру и читаемость кода.
Селектор потомков особенно полезен в следующих случаях:
- Структурирование контента: Помогает стилизовать элементы внутри определенных секций или компонентов, не затрагивая похожие элементы в других частях страницы.
- Тематическое оформление: Используется для применения уникальных стилей к элементам, расположенным внутри определенных контейнеров, например, для статей, сайдбаров или футеров.
- Изоляция стилей: Обеспечивает локальное применение стилей, предотвращая их случайное распространение на другие элементы документа.
Применение селектора потомков упрощает создание модульной и легко поддерживаемой структуры стилей, позволяя разработчикам более точно и гибко управлять внешним видом веб-страницы.
Однако, важно соблюдать баланс и избегать слишком глубокой вложенности селекторов, так как это может усложнить поддержку и оптимизацию кода. Рекомендуется использовать селектор потомков с умом, ориентируясь на поддержание чистоты и простоты структуры CSS.
- 4 апреля 2024
Псевдокласс :focus
Псевдокласс :focus
в CSS используется для стилизации элементов, которые получили фокус. Это может быть, например, текстовое поле в форме, к которому пользователь переместил курсор для ввода, или ссылка, выбранная через клавиатурный ввод. Псевдокласс :focus
позволяет создать более интерактивный и доступный пользовательский интерфейс, подсвечивая активные или выбранные элементы.
Пример использования :focus
:
input:focus {
border: 2px solid blue;
background-color: lightblue;
}
В этом примере для всех текстовых полей (input
) при получении фокуса будет изменяться цвет границы на синий и фоновый цвет на светло-синий. Это обеспечивает наглядную обратную связь пользователю о том, какой элемент формы активен в данный момент, улучшая общую пользовательскую доступность и удобство использования интерфейса.
Псевдокласс :focus
особенно важен для:
- Улучшения доступности: Он помогает пользователям с ограниченными возможностями или теми, кто использует клавиатурный ввод вместо мыши, понимать, какой элемент управления в данный момент активен.
- Повышения интерактивности: Визуальное отличие активных элементов делает интерфейс более дружелюбным и понятным для пользователя.
- Создания стилистических акцентов: Позволяет добавлять уникальные стилистические особенности для интерактивных элементов интерфейса, подчеркивая их функциональность.
Применение :focus
в сочетании с другими псевдоклассами, такими как :hover
и :active
, позволяет создать комплексное визуальное представление различных состояний элементов управления, делая интерфейс более интуитивно понятным и приятным в использовании.
Однако, важно помнить, что стилизация элементов при помощи :focus
должна быть достаточно заметной, чтобы пользователь мог легко идентифицировать фокусируемый элемент, но при этом не должна быть слишком навязчивой, чтобы не отвлекать от общего восприятия интерфейса.
- 4 апреля 2024
Селектор по id
CSS-селектор по идентификатору (id
) позволяет стилизовать элементы веб-страницы, которые имеют уникальный идентификатор. Использование селектора по id
делает возможным точечное применение стилей к конкретному элементу, не затрагивая другие элементы на странице.
Селектор по id
обозначается знаком решетки (#
) перед именем идентификатора. Идентификаторы в HTML должны быть уникальными в пределах документа, что делает селектор по id
мощным инструментом для стилизации конкретных элементов.
Пример использования селектора по id
:
<div id="uniqueElement">Этот элемент уникален.</div>
#uniqueElement {
color: green;
font-size: 20px;
}
В этом примере элементу <div>
с id="uniqueElement"
присваиваются стили, делающие текст зеленым и увеличивающие размер шрифта до 20 пикселей. Эти стили будут применены только к этому конкретному элементу благодаря уникальности идентификатора.
Преимущества использования селектора по id
:
- Точечная стилизация: Селектор по
id
позволяет применять стили к конкретному элементу, не влияя на другие элементы. - Высокий приоритет: Стили, примененные через селектор по
id
, имеют более высокий приоритет, чем стили, примененные через классы и теги, что облегчает переопределение стилей.
Важно помнить:
- Идентификатор должен быть уникальным в пределах всего HTML-документа.
- Злоупотребление селекторами по
id
может сделать CSS-код сложным для поддержки, особенно в больших проектах. Рекомендуется использовать их с умом, предпочитая классы для стилизации, когда это возможно. - Селекторы по
id
могут увеличить специфичность CSS-правил, что иногда затрудняет их переопределение.
Использование селектора по id
является мощным инструментом в арсенале веб-разработчика, позволяя точечно влиять на стиль отдельных элементов страницы.
- 4 апреля 2024
Псевдокласс :link
Интересный фронтенд — в телеграм-канале «Доктайп»
Псевдокласс :link
в CSS предназначен для стилизации ссылок, которые ещё не были посещены пользователем. Этот псевдокласс позволяет разработчикам задавать внешний вид для непосещенных ссылок отдельно от тех, по которым пользователь уже переходил, что помогает лучше ориентироваться на странице и повышает удобство использования сайта.
Пример использования псевдокласса :link
для стилизации непосещенных ссылок:
a:link {
color: #007bff;
text-decoration: none;
}
В данном примере для всех непосещенных ссылок устанавливается синий цвет (#007bff
) и убирается подчеркивание. Это делает внешний вид ссылок более аккуратным и одновременно информативным, поскольку пользователь может легко отличить их от уже посещенных (:visited
) ссылок.
При работе с :link
, важно помнить, что этот псевдокласс должен использоваться в сочетании с псевдоклассом :visited
для полной стилизации состояний ссылок. Также рекомендуется определять стили для псевдоклассов :hover
и :active
, чтобы обеспечить интерактивный и отзывчивый интерфейс.
Пример полного набора стилей для ссылок:
a:link {
color: #007bff;
text-decoration: none;
}
a:visited {
color: #666;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:active {
color: #ff0000;
}
В этом примере задаются различные стили для всех возможных состояний ссылок: :link
для непосещённых, :visited
для посещённых, :hover
при наведении курсора и :active
в момент нажатия на ссылку. Такой подход позволяет создать более динамичный и интуитивно понятный интерфейс веб-страницы.
- 4 апреля 2024
Несколько селекторов через запятую
Список селекторов в CSS представляет собой перечень селекторов, разделенных запятыми, что позволяет применить один и тот же набор стилей к различным элементам веб-страницы. Этот метод упрощает написание CSS-кода, избавляя от необходимости дублировать стили для каждого типа элементов отдельно.
Пример использования списка селекторов для стилизации заголовков, абзацев и элементов списка:
h1, h2, p, li {
color: #333;
font-family: 'Arial', sans-serif;
}
В этом примере все заголовки первого и второго уровней, абзацы и элементы списка (<li>
) окрашиваются в темно-серый цвет (#333
) и стилизуются шрифтом Arial. Использование списка селекторов позволяет значительно сократить количество кода, необходимого для применения общих стилей к разным элементам.
Применение списка селекторов эффективно во многих ситуациях, включая:
- Применение базовых стилей текста (цвет, шрифт, размер) к различным типам элементов.
- Сброс стандартных отступов для элементов списка, параграфов и других блочных элементов.
- Установка общих стилей для интерактивных элементов, таких как кнопки и ссылки, в различных частях веб-страницы.
При работе с списком селекторов важно учитывать, что стили будут применены ко всем указанным элементам. Для более специфичных стилевых задач следует использовать классы или идентификаторы, а также более конкретные типы селекторов.
Списки селекторов улучшают читаемость и поддерживаемость CSS-кода, позволяя разработчикам более эффективно управлять стилями веб-страницы. Этот подход способствует сокращению дублирования кода и обеспечивает более упорядоченную структуру стилей.
- 4 апреля 2024
Смежный селектор +
Смежный селектор в CSS, обозначаемый знаком плюс (+
), позволяет выбирать элемент, который является непосредственным соседом другого элемента на одном и том же уровне иерархии DOM. Этот селектор эффективен для применения стилей к элементу, находящемуся в точном последовательном порядке после другого элемента в коде HTML.
Пример применения смежного селектора:
h2 + p {
color: #757575;
margin-top: 0;
}
В данном случае к абзацу (<p>
), непосредственно следующему за заголовком второго уровня (<h2>
), применяются определенные стили: цвет текста изменится на серый, а верхний отступ будет устранен. Это особенно полезно для визуальной корректировки расположения текста после заголовков, чтобы обеспечить более четкое и аккуратное представление контента.
Смежный селектор находит широкое применение в веб-разработке для детальной настройки отступов между элементами и для реализации определенных стилевых эффектов, зависящих от положения элементов друг относительно друга в документе.
При использовании смежного селектора важно учитывать следующие моменты:
- Применяйте смежный селектор с умом, особенно в сложных структурах HTML, поскольку изменения в разметке могут повлиять на его работоспособность.
- Смежный селектор идеален для случаев, когда необходимо модифицировать стиль элемента в зависимости от его расположения по отношению к предыдущему элементу на том же уровне.
- Ограничьте использование смежного селектора для поддержания простоты и читаемости кода, особенно когда речь идет о крупных стилевых листах.
Соблюдение стандартов кодирования и внимание к деталям в оформлении помогут создать легко поддерживаемый и гибкий код CSS, способствующий эффективной стилизации веб-страниц.
- 4 апреля 2024
Селектор type
Селекторы типа в CSS используются для выбора HTML-элементов, соответствующих определённому имени тега. Они позволяют применять стили к элементам, не полагаясь на классы или идентификаторы, что делает их идеальными для установления базовых стилей для стандартных элементов страницы, таких как абзацы, заголовки и списки.
Пример использования селектора типа для стилизации всех абзацев (<p>
) на странице:
p {
font-family: "Helvetica", sans-serif;
line-height: 1.6;
color: #333;
}
В этом примере каждому абзацу на веб-странице задаётся шрифт Helvetica, межстрочный интервал в полтора раза больше размера шрифта и тёмно-серый цвет текста. Это базовая стилизация, которая может быть переопределена дополнительными селекторами, например, селекторами класса или идентификатора.
Селекторы типа полезны для задания общих стилей элементам, которые часто используются в документе, и являются основой каскадности в CSS. Они позволяют легко поддерживать и обновлять стили сайта, предоставляя единообразное представление элементов по всему сайту.
При работе с селекторами типа рекомендуется следовать принципам чистого кода и лучшим практикам веб-разработки:
- Используйте селекторы типа для установления базовых стилей документа, таких как шрифт, размер текста и цвет.
- Старайтесь не переопределять стили селекторов типа слишком специфичными селекторами без необходимости, чтобы избежать конфликтов и сложностей с каскадом.
- Для обеспечения читаемости и поддерживаемости кода придерживайтесь соглашений о написании CSS, включая использование строчных букв для селекторов и свойств, добавление пробела перед открывающей фигурной скобкой и одного уровня отступа для свойств внутри правила.
Соблюдение этих рекомендаций поможет создать структурированный и легко поддерживаемый код, облегчающий дальнейшую разработку и обновление веб-сайта.
- 4 апреля 2024
Универсальный селектор *
В CSS универсальный селектор *
(звёздочка) используется для применения стилей ко всем элементам на веб-странице. Этот селектор полезен, когда необходимо установить общие стили для всего документа, например, для сброса стандартных отступов или задания базового шрифта.
Пример использования универсального селектора для сброса стандартных отступов и задания базового шрифта:
* {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
В этом примере у всех элементов страницы обнуляются внешние и внутренние отступы (margin
и padding
), а также устанавливается шрифт Arial как базовый для всего документа.
Использование универсального селектора делает стилизацию более предсказуемой, поскольку убирает различия в отображении элементов, которые могут быть установлены браузером по умолчанию. Однако следует быть осторожным с его использованием, так как применение слишком многочисленных стилей ко всем элементам может замедлить загрузку страницы.
При работе с CSS важно следовать рекомендациям по стилю кода, чтобы обеспечить читаемость и поддерживаемость кода. Например, согласно рекомендациям HTML Academy:
- Селекторы и свойства записываются строчными буквами.
- Перед открывающей фигурной скобкой ставится пробел, свойства перечисляются с новой строки с одним уровнем отступа.
- После двоеточия в объявлении свойства следует пробел.
- В конце объявления свойства ставится точка с запятой.
- Между блоками правил оставляется одна пустая строка для лучшей читаемости.
- 4 апреля 2024
Игры с бесконечностью, или зачем нам infinity в CSS
💡 Это перевод статьи Will Boyd из блога CodersBlock. Оригинал: https://codersblock.com/blog/playing-with-infinity-in-css/
В CSS есть константа Infinity. Когда я только узнал об этом, ко мне в голову сразу пришла гора абсурдных идей, как это использовать, среди которых была и пара неплохих.
Ну, мне так кажется.
Кстати, если что, infinity
можно использовать только внутри calc()
. Ну, поехали!
🚀 Сегодня вам бесплатно доступен тренажёр по HTML и CSS.
- 5 марта 2024
Межстрочное расстояние в CSS. Свойство line-height
line-height
задает интерлиньяж, то есть расстояние между базовыми линиями соседних строк текста. Это свойство может влиять на читабельность текста и его восприятие.
Значение line-height
можно указывать как в абсолютных единицах (например, px
, pt
), так и в относительных (em
, %
, без единицы измерения). Рекомендуется использовать относительные единицы, так как они позволяют сохранить масштабируемость и адаптивность текста.
Примеры использования:
line-height: 1.2;
— относительное значение, не зависящее от размера шрифта.line-height: 20px;
— абсолютное значение, фиксированный размер интерлиньяжа.line-height: 1.5em;
— относительное значение, зависящее от размера шрифта элемента.
- 4 марта 2024