Вёрстка сайтов. Основы
1. Основные HTML теги и атрибуты
Вот шпаргалка по основным HTML тегам, их атрибутам и правилам вложенности:
Теги верхнего уровня
Структура документа
<html>
: Корневой элемент HTML-документа.<head>
: Содержит мета-информацию о документе.<title>
: Заголовок страницы, отображаемый в закладке браузера.<meta>
: Метаданные документа.<link>
: Связь с внешними ресурсами (например, подключение стилей).<script>
: Подключение или внедрение скриптов JavaScript.
Основное содержание
<body>
: Основное содержимое HTML-документа.<header>
: Заголовок страницы или секции.<nav>
: Навигационная панель.<main>
: Основное содержание документа.- Атрибуты:
class
,id
,style
- Вложенность: Основное содержимое страницы, кроме повторяющихся блоков, таких как
<header>
,<footer>
,<nav>
и т.д. <section>
: Раздел документа.<article>
: Независимый, самостоятельный фрагмент контента.<aside>
: Контент, связанный с основным, но менее важный.<footer>
: Нижний колонтитул страницы или секции.
Текстовые элементы
<h1> - <h6>
: Заголовки (от самого важного<h1>
до наименее важного<h6>
).<p>
: Абзац текста.<a>
: Гиперссылка.
Списки
Формы
<form>
: Форма для ввода данных.- Атрибуты:
action
,method
,enctype
,class
,id
,style
- Вложенность:
<input>
,<textarea>
,<button>
,<label>
,<fieldset>
,<legend>
,<select>
,<option>
<input>
: Поле ввода.- Атрибуты:
type
,name
,value
,placeholder
,required
,class
,id
,style
- Вложенность: Не имеет вложенных тегов.
<button>
: Кнопка.<label>
: Метка для элемента формы.
Медиа
<img>
: Изображение.<figure>
: Семантический контейнер для медиаконтента.<figcaption>
: Подпись к медиаконтенту.
2. Применение методологии БЭМ
Методология БЭМ (Блок, Элемент, Модификатор) помогает структурировать CSS-код и HTML-разметку. Рассмотрим создание типового сайта с dashboard'ом и формой.
project/ |-- css/ | |-- blocks/ | |-- header.css | |-- nav.css | |-- main-content.css | |-- footer.css |-- index.html
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Dashboard</title> <link rel="stylesheet" href="css/blocks/header.css"> <link rel="stylesheet" href="css/blocks/nav.css"> <link rel="stylesheet" href="css/blocks/main-content.css"> <link rel="stylesheet" href="css/blocks/footer.css"> </head> <body> <header class="header"> <h1 class="header__title">Dashboard</h1> </header> <nav class="nav"> <ul class="nav__list"> <li class="nav__item"><a href="#" class="nav__link">Home</a></li> <li class="nav__item"><a href="#" class="nav__link">Profile</a></li> <li class="nav__item"><a href="#" class="nav__link">Settings</a></li> </ul> </nav> <main class="main-content"> <section class="main-content__section"> <h2 class="main-content__title">Welcome to the Dashboard</h2> <form class="form"> <label class="form__label" for="username">Username</label> <input class="form__input" type="text" id="username" name="username"> <label class="form__label" for="password">Password</label> <input class="form__input" type="password" id="password" name="password"> <button class="form__button" type="submit">Login</button> </form> </section> </main> <footer class="footer"> <p class="footer__text">© 2024 Dashboard</p> </footer> </body> </html>
.header { background-color: #f8f9fa; padding: 20px; text-align: center; } .header__title { font-size: 24px; color: #333; }
3. Основные свойства CSS
Вот шпаргалка по основным и часто используемым CSS-свойствам:
Блочная модель и размеры
width
: ширина элемента.height
: высота элемента.margin
: внешние отступы.padding
: внутренние отступы.border
: граница элемента.
Шрифты и текст
font-size
: размер шрифта.font-weight
: толщина шрифта.font-family
: семейство шрифтов.color
: цвет текста.text-align
: выравнивание текста.line-height
: высота строки.
Фон и изображения
background-color
: цвет фона.background-image
: изображение фона.background-size
: размер фонового изображения.
Отображение и позиционирование
display
: отображение элемента.position
: позиционирование элемента.top
,right
,bottom
,left
: позиционирование по осям.z-index
: порядок слоя.
4. Применение CSS для сайта
Применим CSS для нашего типового сайта с dashboard'ом и формой.
.header { background-color: #f8f9fa; padding: 20px; text-align: center; } .header__title { font-size: 24px; color: #333; }
.nav { background-color: #343a40; padding: 10px; } .nav__list { list-style: none; display: flex; justify-content: space-around; padding: 0; margin: 0; } .nav__item {} .nav__link { color: #fff; text-decoration: none; padding: 10px 20px; } .nav__link:hover { background-color: #495057; }
.main-content { padding: 20px; } .main-content__section { background-color: #fff; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); border-radius: 5px; } .main-content__title { font-size: 20px; margin-bottom: 20px; } .form { display: flex; flex-direction: column; } .form__label { margin-bottom: 5px; } .form__input { padding: 10px; margin-bottom: 15px; border: 1px solid #ced4da; border-radius: 5px; } .form__button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .form__button:hover { background-color: #0056b3; }
.footer { background-color: #f8f9fa; padding: 10px; text-align: center; } .footer__text { color: #6c757d; }
5. Чек-лист по правильной вёрстке сайтов
- Структура HTML:
- Используйте семантические теги (
<header>
,<nav>
,<main>
,<section>
,<article>
,<aside>
,<footer>
). - Правильно вложите теги согласно их предназначению.
- Убедитесь, что все теги корректно закрыты.
- Методология БЭМ:
- Атрибуты:
- Используйте атрибуты
class
иid
для стилизации и скриптов. - Убедитесь, что все ссылки (
<a>
) имеют атрибутhref
. - Формы должны иметь атрибуты
action
иmethod
. - Стилизация:
- Применяйте внешние CSS-файлы.
- Используйте предсказуемую единицу измерения (
px
,em
,rem
). - Используйте
flexbox
иgrid
для создания макетов. - Отзывчивость:
- Используйте медиазапросы для адаптивного дизайна.
- Проверяйте сайт на различных устройствах и разрешениях.
- Доступность:
- Добавьте
alt
текст для изображений. - Используйте семантические теги и атрибуты
aria
для улучшения доступности. - Обеспечьте возможность навигации с клавиатуры.
- Оптимизация:
- Минимизируйте CSS и JavaScript.
- Оптимизируйте изображения для быстрой загрузки.
- Используйте кеширование браузера.
- Тестирование:
Этот чек-лист поможет вам быстро и качественно создавать современные и семантически правильные веб-сайты.
Подробное объяснение CSS единиц измерения
1. Единицы измерения CSS
- px (пиксели): Абсолютная единица измерения. Используется для задания точных размеров элементов.
- Применение: Подходит для фиксированных макетов, где важна точная пиксельная точность.
- Пример:
width: 100px;
- % (проценты): Относительная единица измерения. Относится к размеру родительского элемента.
- Применение: Используется для создания гибких, отзывчивых макетов.
- Пример:
width: 50%;
(ширина элемента составляет 50% от ширины родительского элемента) - em: Относительная единица измерения. Основана на размере шрифта родительского элемента.
- Применение: Подходит для задания размеров, связанных с текстом (например, отступы, ширина контейнера).
- Пример:
font-size: 2em;
(размер шрифта в два раза больше, чем у родителя) - rem: Относительная единица измерения. Основана на размере шрифта корневого элемента (
<html>
). - Применение: Используется для создания более предсказуемых и масштабируемых макетов.
- Пример:
font-size: 1.5rem;
(размер шрифта в 1.5 раза больше, чем у корневого элемента) - vw (viewport width): Относительная единица измерения. Соответствует 1% ширины окна просмотра (viewport).
- Применение: Используется для адаптивного дизайна, зависящего от ширины экрана.
- Пример:
width: 50vw;
(ширина элемента составляет 50% от ширины окна просмотра) - vh (viewport height): Относительная единица измерения. Соответствует 1% высоты окна просмотра (viewport).
Подробное объяснение Flexbox и Grid
Flexbox
Flexbox - это модель компоновки, предназначенная для упрощения выравнивания и распределения пространства между элементами в контейнере.
- Для flex контейнера:
display: flex;
: Определяет контейнер как flex.flex-direction
: Задает направление основного потока (row
,row-reverse
,column
,column-reverse
).justify-content
: Выравнивание элементов вдоль основного потока (flex-start
,flex-end
,center
,space-between
,space-around
,space-evenly
).align-items
: Выравнивание элементов по поперечному потоку (flex-start
,flex-end
,center
,baseline
,stretch
).flex-wrap
: Определяет, должны ли элементы переноситься на новую строку (nowrap
,wrap
,wrap-reverse
).- Для flex элементов:
flex-grow
: Определяет, как элемент будет расти относительно остальных элементов (по умолчанию0
).flex-shrink
: Определяет, как элемент будет сжиматься относительно остальных элементов (по умолчанию1
).flex-basis
: Задает начальный размер элемента перед распределением пространства (auto
,px
,%
).align-self
: Выравнивание элемента независимо от других (auto
,flex-start
,flex-end
,center
,baseline
,stretch
).
.container { display: flex; flex-direction: row; justify-content: space-between; align-items: center; } .item { flex: 1; /* flex-grow: 1, flex-shrink: 1, flex-basis: 0 */ }
Grid
CSS Grid Layout - это система компоновки на основе сетки, которая позволяет создавать сложные макеты веб-страниц.
- Для grid контейнера:
display: grid;
: Определяет контейнер как grid.grid-template-columns
: Задает количество и размер столбцов (repeat(3, 1fr)
,100px 1fr 2fr
).grid-template-rows
: Задает количество и размер строк (repeat(2, 100px)
,auto 1fr
).grid-template-areas
: Определяет области сетки именами ("header header" "sidebar main" "footer footer"
).gap
: Устанавливает промежутки между строками и столбцами (row-gap
,column-gap
,gap
).- Для grid элементов:
.container { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto 1fr auto; gap: 10px; grid-template-areas: "header header header" "sidebar main main" "footer footer footer"; } .header { grid-area: header; } .sidebar { grid-area: sidebar; } .main { grid-area: main; } .footer { grid-area: footer; }
<div class="container"> <div class="header">Header</div> <div class="sidebar">Sidebar</div> <div class="main">Main Content</div> <div class="footer">Footer</div> </div>
Применение Flexbox и Grid в проекте
HTML:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Dashboard</title> <link rel="stylesheet" href="css/blocks/header.css"> <link rel="stylesheet" href="css/blocks/nav.css"> <link rel="stylesheet" href="css/blocks/main-content.css"> <link rel="stylesheet" href="css/blocks/footer.css"> </head> <body> <header class="header"> <h1 class="header__title">Dashboard</h1> </header> <nav class="nav"> <ul class="nav__list"> <li class="nav__item"><a href="#" class="nav__link">Home</a></li> <li class="nav__item"><a href="#" class="nav__link">Profile</a></li> <li class="nav__item"><a href="#" class="nav__link">Settings</a></li> </ul> </nav> <main class="main-content"> <section class="main-content__section"> <h2 class="main-content__title">Welcome to the Dashboard</h2> <form class="form"> <label class="form__label" for="username">Username</label> <input class="form__input" type="text" id="username" name="username"> <label class="form__label" for="password">Password</label> <input class="form__input" type="password" id="password" name="password"> <button class="form__button" type="submit">Login</button> </form> </section> </main> <footer class="footer"> <p class="footer__text">© 2024 Dashboard</p> </footer> </body> </html>
CSS:
.header { background-color: #f8f9fa; padding: 20px; text-align: center; } .header__title { font-size: 24px; color: #333; }
.nav { background-color: #343a40; padding: 10px; } .nav__list { list-style: none; display: flex; justify-content: space-around; padding: 0; margin: 0; } .nav__item {} .nav__link { color: #fff; text-decoration: none; padding: 10px 20px; } .nav__link:hover { background-color: #495057; }
.main-content { display: grid; grid-template-columns: 1fr; gap: 20px; padding: 20px; } .main-content__section { background-color: #fff; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); border-radius: 5px; } .main-content__title { font-size: 20px; margin-bottom: 20px; } .form { display: flex; flex-direction: column; } .form__label { margin-bottom: 5px; } .form__input { padding: 10px; margin-bottom: 15px; border: 1px solid #ced4da; border-radius: 5px; } .form__button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .form__button:hover { background-color: #0056b3; }
.footer { background-color: #f8f9fa; padding: 10px; text-align: center; } .footer__text { color: #6c757d; }
Заключение
Теперь вы знаете, как использовать основные единицы измерения CSS, а также Flexbox и Grid для создания отзывчивых макетов. Эти инструменты помогут вам создавать современные и семантически правильные веб-сайты с чистой архитектурой файлов и гибким дизайном.
Использование методологии БЭМ и Code-Style
БЭМ (Блок, Элемент, Модификатор) — это методология, которая помогает разработчикам создавать расширяемые и легко поддерживаемые интерфейсы.
Основные концепции БЭМ
- Блок (Block): Независимый, автономный компонент страницы.
- Элемент (Element): Составная часть блока, которая не может существовать отдельно от блока.
- Модификатор (Modifier): Вариант блока или элемента, изменяющий его внешний вид или поведение.
Принципы именования в БЭМ
- Блок:
block
- Элемент:
block__element
- Модификатор блока:
block--modifier
- Модификатор элемента:
block__element--modifier
Пример использования БЭМ
<div class="menu"> <ul class="menu__list"> <li class="menu__item menu__item--active"> <a href="#" class="menu__link">Home</a> </li> <li class="menu__item"> <a href="#" class="menu__link">About</a> </li> <li class="menu__item"> <a href="#" class="menu__link">Contact</a> </li> </ul> </div>
.menu { background-color: #f8f9fa; padding: 20px; } .menu__list { list-style: none; padding: 0; margin: 0; } .menu__item { margin-bottom: 10px; } .menu__item--active .menu__link { font-weight: bold; } .menu__link { color: #007bff; text-decoration: none; } .menu__link:hover { text-decoration: underline; }
Code-Style
Code-style — это набор правил и рекомендаций по написанию кода, обеспечивающий единообразие и удобочитаемость.
Принципы хорошего code-style:
- Читаемость: Код должен быть легко читаемым.
- Согласованность: Все члены команды должны придерживаться одних и тех же стандартов.
- Понятность: Код должен быть понятен не только автору, но и другим разработчикам.
Рекомендации по написанию CSS:
/* Правильно */ .menu { background-color: #f8f9fa; padding: 20px; } .menu__item { margin-bottom: 10px; } /* Неправильно */ .menu {background-color: #f8f9fa;padding: 20px;} .menu__item{margin-bottom: 10px;}
/css /blocks /header.css /nav.css /main-content.css /footer.css style.css
@import 'blocks/header.css'; @import 'blocks/nav.css'; @import 'blocks/main-content.css'; @import 'blocks/footer.css';
Пример использования БЭМ и code-style в проекте
HTML:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Dashboard</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <header class="header"> <h1 class="header__title">Dashboard</h1> </header> <nav class="nav"> <ul class="nav__list"> <li class="nav__item nav__item--active"> <a href="#" class="nav__link">Home</a> </li> <li class="nav__item"> <a href="#" class="nav__link">Profile</a> </li> <li class="nav__item"> <a href="#" class="nav__link">Settings</a> </li> </ul> </nav> <main class="main-content"> <section class="main-content__section"> <h2 class="main-content__title">Welcome to the Dashboard</h2> <form class="form"> <label class="form__label" for="username">Username</label> <input class="form__input" type="text" id="username" name="username"> <label class="form__label" for="password">Password</label> <input class="form__input" type="password" id="password" name="password"> <button class="form__button" type="submit">Login</button> </form> </section> </main> <footer class="footer"> <p class="footer__text">© 2024 Dashboard</p> </footer> </body> </html>
CSS (структура файлов):
@import 'blocks/header.css'; @import 'blocks/nav.css'; @import 'blocks/main-content.css'; @import 'blocks/footer.css';
.header { background-color: #f8f9fa; padding: 20px; text-align: center; } .header__title { font-size: 24px; color: #333; }
.nav { background-color: #343a40; padding: 10px; } .nav__list { list-style: none; display: flex; justify-content: space-around; padding: 0; margin: 0; } .nav__item {} .nav__item--active .nav__link { font-weight: bold; } .nav__link { color: #fff; text-decoration: none; padding: 10px 20px; } .nav__link:hover { background-color: #495057; }
.main-content { display: grid; grid-template-columns: 1fr; gap: 20px; padding: 20px; } .main-content__section { background-color: #fff; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); border-radius: 5px; } .main-content__title { font-size: 20px; margin-bottom: 20px; } .form { display: flex; flex-direction: column; } .form__label { margin-bottom: 5px; } .form__input { padding: 10px; margin-bottom: 15px; border: 1px solid #ced4da; border-radius: 5px; } .form__button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .form__button:hover { background-color: #0056b3; }
.footer { background-color: #f8f9fa; padding: 10px; text-align: center; } .footer__text { color: #6c757d; }
Придерживаясь методологии БЭМ и правильного code-style, вы создадите легко поддерживаемую, гибкую и расширяемую структуру проекта.
Подготовка к собеседованию
Конечно! Вот план подготовки к собеседованию на позицию фронтенд-разработчика, включающий основные темы, которые были затронуты выше. Мы обсудим основы HTML, CSS, методологии БЭМ и code-style, а также практическое применение этих знаний.
Основные темы для подготовки
1. Основы HTML
- Знать основные HTML теги и их семантическое значение:
<!DOCTYPE html>
,<html>
,<head>
,<meta>
,<title>
,<body>
- Структурные теги:
<header>
,<nav>
,<main>
,<section>
,<article>
,<aside>
,<footer>
- Контентные теги:
<h1> - <h6>
,<p>
,<a>
,<ul>
,<ol>
,<li>
,<img>
,<figure>
,<figcaption>
,<table>
,<tr>
,<th>
,<td>
- Формы:
<form>
,<input>
,<label>
,<button>
,<select>
,<option>
,<textarea>
- Знать атрибуты HTML и их применение:
- Общие атрибуты:
class
,id
,style
,title
,data-*
- Атрибуты формы:
type
,name
,value
,placeholder
,required
,checked
- Ссылки и изображения:
href
,src
,alt
,target
- Понимать разницу между блочными и строчными элементами:
2. Основы CSS
- Знать основные CSS свойства и их значения:
- Селекторы: класс (
.class
), идентификатор (#id
), теги (tag
), атрибуты ([attr=value]
), псевдоклассы (:hover
,:focus
), псевдоэлементы (::before
,::after
) - Базовые свойства:
color
,background-color
,margin
,padding
,border
,font-size
,font-family
- Компоновка:
display
,position
,top
,right
,bottom
,left
,float
,clear
- Flexbox:
display: flex
,flex-direction
,justify-content
,align-items
,flex-wrap
- Grid:
display: grid
,grid-template-columns
,grid-template-rows
,gap
,grid-area
- Адаптивность:
width
,height
,max-width
,min-width
,media queries
3. Методология БЭМ
4. Code-Style
- Чистый и поддерживаемый код:
- Именование классов: понятные и самодокументируемые имена
- Форматирование CSS: отступы, одна строка — одно правило, пустые строки между блоками
- Организация файлов:
Практические задания
- Создание простой веб-страницы:
- Сверстайте страницу с использованием основных HTML тегов.
- Примените CSS для стилизации элементов.
- Используйте Flexbox или Grid для компоновки.
- Применение БЭМ:
- Создайте компонент (например, карточку товара или меню) с использованием БЭМ.
- Разделите CSS на файлы по компонентам.
- Адаптивная верстка:
Типичные вопросы на собеседовании
- HTML:
- Какие семантические теги HTML вы знаете и когда их использовать?
- Чем отличается блочный элемент от строчного?
- CSS:
- Что такое каскад и как работают приоритеты стилей в CSS?
- Объясните, как работает Flexbox и приведите примеры использования.
- Что такое CSS Grid и в чем его преимущества по сравнению с Flexbox?
- БЭМ:
- Code-Style:
Подготовка к собеседованию
- Повторите основные концепции HTML и CSS.
- Практикуйтесь в создании макетов с использованием Flexbox и Grid.
- Примените методологию БЭМ в небольшом проекте.
- Следуйте правилам code-style в своих проектах.
- Подготовьте примеры своих работ и будьте готовы их обсудить.
Дополнительные ресурсы
- MDN Web Docs: Отличный источник для изучения HTML, CSS, JavaScript.
- CSS Tricks: Полезные статьи и примеры по Flexbox, Grid и другим темам.
- BEM Official Website: Официальный сайт методологии БЭМ с документацией и примерами.
Пример собеседования
- Вопрос: Что такое семантические теги HTML?
- Ответ: Семантические теги HTML предоставляют смысловую информацию о содержимом страницы. Примеры включают
<header>
,<footer>
,<article>
,<section>
и другие. Они помогают браузерам и поисковым системам лучше понять структуру страницы. - Вопрос: Объясните, как работает Flexbox.
- Ответ: Flexbox — это модель компоновки, предназначенная для создания гибких макетов. Flex-контейнеры могут выравнивать и распределять пространство среди своих потомков. Основные свойства включают
flex-direction
,justify-content
,align-items
,flex-wrap
. - Вопрос: Как именовать классы по БЭМ?
- Ответ: В БЭМ классы именуются по следующим правилам: блоки —
block
, элементы —block__element
, модификаторы —block--modifier
иblock__element--modifier
. Пример:button
,button__icon
,button--primary
,button__icon--small
. - Вопрос: Какие единицы измерения в CSS вы знаете и когда их использовать?
- Ответ: Единицы измерения включают
px
(пиксели) для точных размеров,%
(проценты) для относительных размеров,em
иrem
для размеров, основанных на шрифте,vw
иvh
для размеров, основанных на окне просмотра.px
используется для фиксированных размеров,%
— для гибких макетов,em
иrem
— для масштабируемости,vw
иvh
— для адаптивного дизайна.
Заключение
Пройдите через все основные темы, подготовьте примеры проектов и будьте готовы объяснять свои решения. Удачи на собеседовании!
Дальнейшее развитие
Для успешной подготовки к собеседованию в сфере фронтенд-разработки можно добавить следующие темы и ресурсы:
- JavaScript:
- Основы языка: переменные, типы данных, операторы, условные операторы, циклы, функции.
- Объекты, массивы, строки, числа и другие встроенные типы данных.
- DOM (Document Object Model): работа с элементами на веб-странице.
- События и обработчики событий.
- AJAX и работа с HTTP запросами.
- ES6+ функции и особенности: стрелочные функции, деструктуризация, промисы, async/await.
- React:
- Основы React: компоненты, JSX, пропсы, состояние.
- Жизненный цикл компонентов.
- Работа с формами в React.
- Управление состоянием: useState, useEffect, useContext и другие хуки.
- Роутинг с React Router.
- Аутентификация и авторизация в React-приложениях.
- Vue.js:
- Основы Vue.js: компоненты, директивы, вычисляемые свойства, события.
- Работа с формами и валидация данных.
- Управление состоянием: Vuex.
- Маршрутизация с Vue Router.
- Создание кастомных директив и фильтров.
- TypeScript:
- Основы TypeScript: типы данных, интерфейсы, классы, дженерики.
- Интеграция TypeScript с React и Vue.js.
- Архитектура веб-приложений:
- Оптимизация производительности:
- Оптимизация загрузки ресурсов: минификация, сжатие, кэширование.
- Оптимизация работы с изображениями.
- Ленивая загрузка компонентов и изображений.
- Инструменты разработчика:
- Использование Git и систем контроля версий.
- Инструменты сборки: Webpack, Parcel.
- Отладка кода в браузере: DevTools.
- Тестирование кода: Jest, React Testing Library, Vue Test Utils.
- Дополнительные навыки:
Ресурсы для изучения
- MDN Web Docs: Официальная документация по HTML, CSS и JavaScript.
- FreeCodeCamp: Бесплатные курсы по веб-разработке.
- Codecademy: Интерактивные уроки по HTML, CSS, JavaScript, React и другим технологиям.
- YouTube: Видеоуроки и онлайн-курсы по фронтенд-разработке.
- Блоги и сообщества разработчиков: Medium, Dev.to, Hashnode.
- Книги: "JavaScript: The Good Parts" Дугласа Крокфорда, "React и Redux" Алекс Бэнкса и Евы Порселло.
Помните, что самая важная часть подготовки — это практика. Решайте задачи, создавайте проекты и применяйте полученные знания на практике. Удачи вам на собеседовании!