Привет, Хабр!

Вопросы по HTML и CSS всё реже встречаются на собеседованиях для фронтендеров. Но в основном это касается позиций middle и выше. А вот для начинающих специалистов они всё ещё есть.

Поскольку новичкам всегда сложнее проходить собеседования, я захотел помочь. Я поискал вопросы с собеседований, которые были в 2025 году, и составил список наиболее часто встречающихся вопросов.

А главное, отвечать на них будет ChatGPT. Я же буду его дополнять, если потребуется. Многие же используют его для подготовки. Вот и посмотрим, как он справится.

Сразу скажу, что буду душнить. Так что вы сами рассудите, кто из нас лучше отвечает.

Давайте начнём!

Что такое семантика? Зачем она нужна?

Ответ ChatGPT: Семантика в HTML — это использование элементов по их смысловому назначению, а не только ради внешнего вида. Она помогает достичь несколько целей.

Во-первых, поисковые системы лучше понимают структуру страницы. Легче определить основной контент или навигацию. В результате улучшается индексирование.

Во-вторых, семантическая верстка улучшает доступность. Скринридеры лучше ориентируются по странице. Доступны базовые возможности скринридера по быстрому к нужному разделу.

В-третьих, семантика помогает достичь самодокументирования кода. Новому разработчику легче понять структуру страницы.

Разберём два примера кода. Первый будет с использованием только элемента div, а во втором будем использовать семантические элементы.

<body>
  <!-- пример №1 -->
  <div class="header">
    <div class="navigation">
      <!-- здесь область основной навигации -->
    </div>
  </div>
  <div class="main">
    <!-- здесь область основного контента -->
  </div>
</body>
<body>
  <!-- пример №2 -->
  <header class="header">
    <nav class="navigation">
      <!-- здесь область основной навигации -->
    </nav>
  </header>
  <main class="main">
    <!-- здесь область основного контента -->
  </main>
</body>

Проанализировав первый пример кода, поисковые системы, скринридеры и другие увидят «кучу div'ов». А во втором случае они увидят область навигации и основного контента.

Мой комментарий: В целом определение понравится интервьюеру. Но хочу поделиться своим определением.

Семантика — это стиль написания HTML, при котором разработчик задумываемся о том, как правильно передать смысл сущности в код. В этой задаче он выбирает наиболее подходящий элемент по смыслу.

ChatGPT назвал основные преимущества такого подхода. Лично я считаю, что аргумент про читаемость кода притянут за уши. Я его лучше бы не называл. Семантика помогает делать код понятным для поисковых систем и для различных технологий, таких как скринридер.

В качестве отступления хочу поделиться статьёй, где наглядно показал, как использовать основные элементы для вёрстки структуры страницы. В своё время даже Вадим Макеев похвалил эту статью.

Что такое элемент label и зачем нужен атрибут for для него?

Ответ ChatGPT: Элемент label — это элемент, который связывает текстовую подпись с элементом формы (обычно inputselecttextarea) и делает его более удобным и доступным.

Атрибут for нужен, чтобы явно связать элемент label с конкретным элементом формы с помощью его id.

<label for="password">Пароль</label>
<input id="password" type="password">

Это будет полезно в нескольких случаях. Во-первых, пользователь может кликнуть по тексту, и фокус перейдёт на связанное с ним поле. Во-вторых, скринридеры с помощью подписи понимают, какое поле за что отвечает, и корректно озвучивают его.

Мой комментарий: Тут всё по делу сказано. Добавить нечего.

Можем ли в элемент button положить элемент а? 

Ответ ChatGPT: Нельзя. Элементы button и a — это интерактивные элементы, и по HTML-спецификации один интерактивный элемент нельзя вкладывать в другой.

Мой комментарий: В стандарте у каждого элемент есть описание того, к какой категории элементов он относится и какая у него контентная модель. Проще говоря, какие элементы в него можно вложить. Всего есть 18 категорий.

Например, элемент button относится к категориям: «Flow content», «Phrasing content» и «Interactive content». В него можно вкладывать элементы из категории: «Phrasing content» за исключением тех элементов, которые относятся к категории Interactive content.

Элемент a, как раз к ней относится, если объявлен атрибут href. Поэтому его нельзя вложить в элемент button.

Что такое CSS?

Ответ ChatGPT: CSS (Cascading Style Sheets) — это язык описания стилей, который используется для определения внешнего вида и визуального представления HTML-документов.

Мой комментарий: В целом ответ ChatGPT отличный. Я лично всегда рекомендую использовать меньше слов в объяснении терминов. Так вам будет проще не запутаться и собеседующему сложнее прицепиться к вам.

Мой вариант определения такой: «CSS — это язык стилизации HTML-элементов».

Что такое специфичность, и как она работает?

Ответ ChatGPT: Специфичность — это механизм в CSS, по которому браузер решает, какое правило применить, если несколько CSS-правил подходят к одному и тому же элементу. Она представляется в виде четвёрки чисел:

/*
(a, b, c, d), где:
a - Inline-стили
b - количество id-селекторов
c - количество классов, атрибутов и псевдоклассов
d - количество тегов и псевдоэлементов
*/

Когда браузер встречает конфликтующие правила, то он сравнивает специфичность селекторов, и правило с более высокой применяется к элементу.

Мой комментарий: Специфичность — это алгоритм, с помощью которого рассчитывается приоритет правила. В результате его вычисления браузер получает число, состоящее из трёх цифр.

/*
A - количество селекторов по ID
B - количество селекторов по классу, атрибутам и псевдоклассам
C - количество селекторов по типу и по псевдоэлементам
*/

Чем число больше, тем более специфичен селектор.

В целом ChatGPT ответил правильно. Мне кажется, что мало разработчиков смотрели стандарт и знают, что специфичность рассчитывается по трём цифрам. Так что на этот момент можно не обращать внимание.

Важно другое. ChatGPT не сказал, что в CSS есть псевдо-классы, которые влияют на расчёт специфичности. Например, псевдо-класс :where() устанавливает специфичность в значение 0 0 0 для любого селектора.

#awesome-block {
  background-color: tomato; /* специфичность: 1, 0, 0 */
}

:where(#awesome-block) {
  background-color: tomato; /* специфичность: 0, 0, 0 */
}

При расчёте селектора с псевдо-классами :is() :not() или :has() браузеры выберут наиболее весомый селектор из тех, которые мы передадим.

:is(h1, #awesome-block) {
  background-color: tomato; /* специфичность: 1, 0, 0 */
}

:not(button, .awesome-block) {
  background-color: tomato; /* специфичность: 0, 1, 0 */
}

:has(div.awesome-container, .awesome-block) {
  background-color: tomato; /* специфичность: 0, 1, 1 */
}

Такой же принцип есть при использовании синтаксиса of S для псевдо-классов :nth-*.

:nth-child(even of li, .item) {
  background-color: tomato; /* специфичность: 0, 2, 0 */
}

Важно помнить о том, что псевдо-классы :nth-* добавляют свою специфичность, в отличие от псевдо-классов :is() :not() и :has().

Что такое флекс-контейнер? Как его создать?

Ответ ChatGPT: Флекс-контейнер — это элемент, внутри которого включён flexbox-контекст, то есть браузер начинает раскладывать его дочерние элементы по правилам Flexbox, а не обычного блочного или строчного потока.

Появляются следующие особенности:

  • дочерние элементы выстраиваются в строку без переноса на новую;

  • можно выравнивать их по основной и поперечной оси;

  • появляется возможность гибко распределять свободное пространство.

Для создания флекс-контейнера нужно объявить свойство display со значением flex или inline-flex для элемента. После этого все прямые потомки становятся флекс-элементами.

Мой комментарий: Мне кажется, что определение чата слишком сложне. Я бы ответил так: Флекс-контейнер — это элемент, у которого установлено свойство display со значением flex или inline-flex.

Также ChatGPT забыл про возможность менять визуальный порядок элемента с помощью свойства order. Мой список особенностей флексбоксов:

  • дочерние элементы выстраиваются в строку без переноса на новую;

  • можно выравнивать их по основной и поперечной оси;

  • появляется возможность гибко распределять свободное пространство;

  • можно изменять визуальный порядок элементов.

В чём разница между флексбоксами и гридами?

Ответ ChatGPT: Разница между Flexbox и Grid в первую очередь в задачах, которые они решают, и в мерности раскладки.

Flexbox работает в одном направлении за раз. Либо по строке, когда установлено значение row для свойства flex-direction, либо по колонке при значении column.

/* дочерние элементы будут расположены в строку */
.container {
  display: flex;
  /* flex-direction: row; это строка добавляется автоматически */
}
/* дочерние элементы будут расположены в столбец */
.container {
  display: flex;
  flex-direction: column;
}

Grid изначально рассчитаны на две оси одновременно, а именно на строки и колонки. Мы описываем сетку, а потом раскладываем элементы по ячейкам.

.container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
}

В итоге Grid больше подходят для создания структуры всей страницы, а Flexbox для её точечных мест, таких как навигация, компоненты и т. д.

Мой комментарий: Ответ ChatGPT не совсем корректный. Разберём разницу между флексбоксами и гридами в нескольких аспектах.

Во-первых, отличается принцип расчёта размеров дочерних элементов. Для флекс-элементов браузеры рассчитывают размер, опираясь на контент по основной оси, и добавляют всё пространство к ним по дополнительной.

В итоге по умолчанию мы получаем, что ширина флекс-элементов рассчитана по контенту, а их высота соответствует родителю. А если поменяем направление осей, то и принцип расчёта размеров поменяется местами.

У гридов же всё по-другому. Браузеры сразу по двум осям распределяют всё пространство между элементами. Если в контейнере один дочерний элемент, то он получит всё сразу.

<body>
  <div class="awesome-container">
    <div class="awesome-block">дочерний элемент</div>
  </div>
</body>
.awesome-container {
  display: grid;
  height: 600px;
}

.awesome-block {
  background-color: pink; /* у свойства height будет значение 600px */
} 

Если их больше, то браузеры равномерно распределят пространство между ними.

<body>
  <div class="awesome-container">
    <div class="awesome-block">дочерний элемент</div>
    <div class="awesome-block">дочерний элемент</div>
    <div class="awesome-block">дочерний элемент</div>
  </div>
</body>
.awesome-container {
  display: grid;
  height: 600px;
}

.awesome-block {
  background-color: pink; /* у свойства height будет значение 200px */
} 

Второе различие заключается в реализации позиционирования элементов. Гриды —действительно более мощный подход, чем флексбоксы, потому что они одновременно позволяют реализовать простые и сложные способы позиционирования.

Например, мы можем расположить элементы только в одном направлении, т. е. либо в столбик, либо в строку.

/* дочерние элементы будут расположены в столбец */
.awesome-container {
  display: grid;
  /* grid-auto-flow: row; это строка добавляется автоматически */
}
/* дочерние элементы будут расположены в строку */
.awesome-container {
  display: grid;
  grid-auto-flow: column;
}

Если же нам нужно позиционировать элементы одновременно по строкам и столбцам , то гриды позволяют сделать это с помощью свойств grid-template-rows и grid-template-columns.

.awesome-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 1fr);
}

Важным нюансом является то, что если элементов недостаточно для заполнения сетки, то браузеры всё равно резервируют места под них.

Получается в случае флексбоксов мы вынуждены позиционировать элементы в одном направлении, а в случае гридов у нас есть выбор.

Такая свобода позволяет использовать гриды для всех типов задач. Мы можем реализовывать с помощью них как масштабный каркас страницы, так и более точечные вещи.

Единственное, на что нужно обращать внимание — это на вычисления размеров элементов. Если нужно, чтобы пространство равномерно распределилось между ними, то используем гриды. Если это не требуется, то флексбоксы.

Заключение

Мы рассмотрели частые вопросы на собеседованиях. Мне хотелось бы, чтобы вы написали в комментариях свои ответы. Так у нас получатся более объективные ответы, и мы поможем новичкам.

На этом я прощаюсь. Спасибо за чтение!

P. S. Помогаю больше узнать про CSS в своём закрытом ТГ-канале CSS isn't magic. Присоединяйтесь. Как вступить написано в профиле.

Мой комментарий: Тут всё по делу сказано. Добавить нечего.

© 2026 ООО «МТ ФИНАНС»

Комментарии (37)


  1. nadge
    23.02.2026 13:31

    "с собеседований джунов-фронтендеров"
    А такие собеседования еще бывают?

    А то судя по остальным статьям с хабра у меня сложились сомнения в этом :)


    1. little-brother
      23.02.2026 13:31

      Я думал у джуниоров спрашивают уже react/vue и ui-фреймворки, а не особенности верстки :)


      1. acsent1
        23.02.2026 13:31

        Обычно все спрашивают


  1. Emelian
    23.02.2026 13:31

    Отвечаю на популярные вопросы по HTML и CSS с собеседований джунов-фронтендеров

    Вот объясните мне, какой смысл в знании популярных ответов на «популярные вопросы»? Это помогает ваять сайты, допустим, бесплатные?

    Я, скажем, ни разу ни фрондендер ни, тем более, бэкэндер. Но, понадобилось выложить на сайте результаты работы по моей обучающей (иностранным языкам) системе «L'école».

    Читаю популярные статьи на эту тему. Там все в стиле ваших вопросов и ответов, только без «чат гопоты». Общие вопросы – общие ответы. Но и конкретные вопросы – конкретные ответы, тоже погоды не делают. Я, как ни знал, как сваять сайт, так и не узнал. Аналогичная ситуация по парсингу html-данных, например из загруженных целиком на компьютер онлайн-словарей. Бороться с защитой сайта, включая капчу, тяжело, но, все же, легче, чем парсить произвольную иерархию словарных статей.

    Ладно, пусть пока речь идет только о простых html-страницах, так чтобы пользователь мог видеть авторские статьи, ссылки на архивы и обучающие видео. После универсального метода «научного втыка», я такой сайт создал: https://lecole.free.nf/ . При этом я вполне могу не знать ответов на простые вопросы «с собеседований джунов-фронтендеров». Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку? Да еще с собственным дизайном, а не копией чужого?

    Причем, ряд принципиальных вопросов остался. Поскольку, все используемые хостинги – бесплатные, то, все они имеют те или иные ограничения. Один поддерживает php, но не поддерживает cgi, другой – наоборот. А третий, вообще ничего не поддерживает. А мне нужно, как минимум иметь статистику посещений. Как ее организовать, например, на сайте, на площадке narod.ru, куда даже доступ к административной панели уже невозможно получить? Пробовал, грузить во фрейм страницы из сайтов, поддерживающих серверные скрипты. Теоретически идея хорошая, но, по факту, не рабочая. Почему, не знаю. Выход только, если на главной странице сделать переходы на аналогичные, php-страницы на дублирующих сайтах, со скриптами. Но, при этом, теряется надежность. Если один сайт отвалится, то перестанут работать сразу два сайта.

    Или, скажем, организация выпадающих списков ( см. https://lecole.free.nf/video.php , https://polezp.narod.ru/video.html и http://scholium.webservis.ru/video.html ). Если на первых двух сайтах, отображение нормальное, то, на последнем, значок разворачивания / сворачивания списков приходится эмулировать буквой, иначе – никак. И подобных задач – море. Причем способность их решать абсолютно не коррелируется с вопросами на собеседовании. Да и ИИ-сервисы помогают, отнюдь не всегда. Я уже начинаю думать, что сам промпт к ИИ важнее ответа от «Искусственного Идиота». По крайней мере, конечного решения по парсингу дерева словарной статьи для соответствующей html-страницы, я так и не получил. Хотя бесконечное экспериментирование с данными, сильно приблизило меня к нему.

    Ну, дам я джуну эту задачу и кучу времени. А решит он ее или нет, совершенно не факт, хоть сдал «вступительные экзамены» или нет.


    1. nee77
      23.02.2026 13:31

      Иногда знаешь как что-то устроено, но объяснить доступным себе или собеседнику языком не можешь. Знание "популярных" ответов на популярные вопросы иногда помогает сами знания разложить по полочкам и закешировать терминологию.


    1. khristm
      23.02.2026 13:31

      Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку?

      Слушай такой макет варганится за час времени, даже не джуном, а тем кто на ютубе ролик "HTML и CSS с нуля" посмотрел неделю назад (это я про себя если что).


      1. Emelian
        23.02.2026 13:31

        Слушай такой макет варганится за час времени, даже не джуном, а тем кто на ютубе ролик "HTML и CSS с нуля" посмотрел неделю назад (это я про себя если что).

        «Трындеть – не мешки ворочать!». Как я «люблю» эти голословные утверждения, без ссылок!

        Разве речь шла только о «макете»? Бесплатные хостинги могут поддерживать серверные скрипты (php, cgi), ,базы данных, типа MySql либо не поддерживать. Хорошо, оставим базы данных, они у меня в планах, для хостинга, который их поддерживает. Но, как вы обеспечите статистику посещений для сайта на narod.ru? Там даже доступа к админ-панели уже нет. А для сайтов, с поддержкой серверных скриптов, как вы там планируете организовать их работу «за час»? Или для вас макет, это просто пара статических html-страниц?

        Далее, контент. Смысл, моих сайтов, не в «макете», он намеренно упрошен до предела. Главное- это их содержимое: статьи, программы, данные, видео. Иногда, с ссылками на внешние ресурсы, из-за ограничений хостинга.

        А саму идею вы не поняли. Речь шла о том, что я бы хрен прошел на вашу позицию джуна, по макетированию тривиальных статических страниц, поскольку не стремился запоминать всю терминологию и определения на эту тему, из-за бесполезности этого, Зато, когда понадобилось сделать реальный сайт (с продублированным контентом, ради надежности, на нескольких сайтах), то я эту задачу реализовал. Не «вообще», а конкретно. У меня есть еще масса материала, которую надо опубликовать. А вот желания делать спецэффекты на страницах – нет. Пусть эту глупую анимацию делают другие. Также нет желания перегружать структурой эти страницы. Этой «ерундой» пусть «болтают» коммерческие сайты, поскольку у них есть ребята, которым за это платят зарплату.


        1. khristm
          23.02.2026 13:31

          Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку?

          Разве речь шла только о «макете»?

          Вопрос подразумевал как раз макет.

          Или для вас макет, это просто пара статических html-страниц?

          Да именно и называют макетом.

          А если вы ведёте речь про полноценное веб приложение то у вас его и нет, у вас пара статичных страниц думаю без единой строчки скриптов, вам до знаний джунов как до Луны, я бы не стал на вашем месте вообще про эту тему рассуждать. Зря вы так преисполнились в собственных силах после хостинга в трёх разных местах статичных страниц с чистым HTML, все таки после хотя бы console.log("hello word") это было бы не так забавно.

          Причем прошу меня правильно понять я не так от вас далеко, но такой-сякой бэкенд я поднял, фетчи ему пуляю, данные тяну, мог бы я вам кинуть ссылку на сайт, только врядли мы мой скрипт ротации jwt токенов и класс рендере календаря с наложением рабочих смен из БД оцените.


          1. Emelian
            23.02.2026 13:31

            Вопрос подразумевал как раз макет.

            Контекст? – Не, не, не слышали!

            Хорошо, джун справился за час! Дайте ссылку на его реальный сайт. Или вы имеете в виду просто скопировать пару страниц из чужого сайта и открыть их локально на компьютере? Тогда и часа не нужно, достаточно пары минут.

            Да именно и называют макетом.

            Даже когда говорят, о макете отчета, в той же «1С», то имеют в виду больше, чем форму без данных. А если у меня убрать данные из макета, то, что тогда останется? Джуну то, что показывать? Типа текстовку: «Главный заголовок сайт», «Неглавный заголовок сайта», «Здесь должна быть картинка», «Здесь должен быть текст в левой колонке», а «Здесь в правой», а «Тут по центру»?

            Так это будет не макет, а, тупо, шаблон, который вы должны наполнить своим содержимым. На таком уровне джуну вообще ничего делать не надо, достаточно, просто сказать, что ваш макет соответствует стандартному пятому шаблону, с десятой цветовой гаммой. На что он тогда час собирается тратить?

            А если вы ведёте речь про полноценное веб приложение то у вас его и нет,

            Зато есть реальная ссылка реального сайта, цель которого не быть «полноценным веб-приложением» (ибо мне это не нужно, я же не на выставку приложений собираюсь), а быть просто контейнером для результатов моих работ. А ваш джун если и использует голый шаблон сайта, то в чем его смысл, без данных?

            Впрочем, ладно, пусть ваш джун возьмет любой готовый шаблон сайта, наполнит его тестовыми данными и произвольными картинками, на свой выбор, выложит его на любой доступный ему веб-сервер и, тупо, даст ссылку. Я просто хочу посмотреть стиль оформления джуна, который он сваяет за «час». Если понравится, честно скажу, ваш джун молодец, я бы так не смог, мол, хороший мальчик, как будут деньги, пусть купит себе конфет! Если не понравится, например, картинки галимые, либо цвета не «впечатлябельные», тогда, сорри, этот макет я бы у себя не использовал бы.

            у вас пара статичных страниц думаю без единой строчки скриптов,

            Собственные серверные скрипты я использую, в теле html-страниц они вызываются (и php и cgi, для тех сайтов, где они поддерживаются). Поэтому я вижу информацию о посещениях (время, айпи-адрес и открываемую страницу). Скрипты, на стороне пользователя мне пока не нужны, предложите идею для их использования, возможно, тогда реализую.

            вам до знаний джунов как до Луны,

            Опять голословные утверждения, без ссылок. Хотя я видел навороченные html-страницы, реализующие всякого рода спецэффекты, только, как не трудно догадаться, контент там малоинтересен. Просто, товарищ хвастается, смотрите, я могу, анимировать анимацию! Зачем? Лучше не спрашивайте!

            Вы можете сказать, что мой контент тоже мало кому интересен. Тем не менее, статистика показывает, что пара процентов посетителей, более-менее интересуется. А мне этого вполне достаточно для продолжения своих разработок.

            я бы не стал на вашем месте вообще про эту тему рассуждать. Зря вы так преисполнились в собственных силах после хостинга в трёх разных местах статичных страниц с чистым HTML, все таки после хотя бы console.log("hello word") это было бы не так забавно.

            Если вы думаете, что ваши аргументы впечатляют, то напрасно. Мои задачи мои сайты решают. Результаты концентрируются в одном месте, на них удобно давать ссылку, больше шансов, что масса имеющегося у меня материала не пропадет, а просто ждет своего времени для публикации. А какую альтернативу предлагает, неявно, вы?

            Типа, пишем заумные статьи, без конкретных ссылок, говорим вообще обо всем и ни о чем конкретно, рассуждаем на модные темы, используя малопонятные обывателю термины и жаргон и т.д. и т.п. И чем это лучше?

            При таком подходе ваша критика действует вхолостую. На меня легче повлиять демонстрацией результата, чем словами его описывающим. Но, результатов, на Хабре, почему-то, меньше чем статей. Забывают сказать о них, наверное!


            1. khristm
              23.02.2026 13:31

              Макет (Layout) — это визуальный чертеж или структура страницы. Он определяет, где будут находиться шапка, подвал, боковые панели и основной контент. Это «скелет» дизайна, созданный в графических редакторах (Figma, Photoshop) или описанный на языке CSS.

              Шаблон (Template) — это техническая заготовка с кодом, которая умеет принимать данные. В шаблоне вместо реального текста или картинок стоят переменные (плейсхолдеры). Когда пользователь заходит на сайт, сервер берет шаблон и вставляет в него нужную информацию из базы данных

              Если вы сами на ходу придумываете свои определения думаю тут даже и разговаривать дальше смыла нет.

              От ваших веб страниц идёт кровь из глаз, если их задача окунуть поситителей в атмосферу уроков информатики в школе 2005 года, тогда да с этим справляются.


              1. Emelian
                23.02.2026 13:31

                Макет (Layout) — это визуальный чертеж или структура страницы. Он определяет, где будут находиться шапка, подвал, боковые панели и основной контент.

                Ну, и что это меняет в моих рассуждениях? Этот «чертеж» или «структура» это просто текст html-страницы, которую вы обозвали «макетом». Не так ли? В чем суть, то? Почему бы не показать образец макета в чистом виде, чем без толку говорить об этом? Хотя, что это даст? Мне он, скорее всего, будет неинтересен, тогда зачем вам напрягаться?

                Это «скелет» дизайна, созданный в графических редакторах (Figma, Photoshop) или описанный на языке CSS.

                А это уже ваша отсебятина! Причем, здесь, Фигма или Фото*опа? Это уже современные инструменты, а html-разметка существовала еще до их появления. Да, для веб-дизайна мобильных приложений без них будет трудно. Но, мне не нужно веб-приложение, мне нужен просто контейнер для моих данных. Вы с таким же успехом можете критиковать ящик с золотыми монетами, Мол, сундук, старый, ветхий, с облупленной краской и сфарганен с стиле Царя Гороха. Даже, если это так, то, что? Монеты – высыпать в грязь, а старый ящик – выкинуть? Потом пойти купить, новый понтовый конейнер и начать туда складывать испачканные в грязи монеты? Где логика, то?

                Шаблон (Template) — это техническая заготовка с кодом, которая умеет принимать данные. В шаблоне вместо реального текста или картинок стоят переменные (плейсхолдеры). Когда пользователь заходит на сайт, сервер берет шаблон и вставляет в него нужную информацию из базы данных

                Это шаблон для динамических страниц, формируемых на стороне сервера. Не забывайте, у меня нет доступа к серверам бесплатного хостинга! Пара сайтов из трех дает возможность только пользоваться серверными скриптами, один – серверной базой данных. На нем да, можно формировать динамику на страницах. Например, гостевую книгу либо форум. Хотя, для моего уровня, достаточно обычной электронной почты. Будет высокая посещаемость, можно будет подумать на эту тему. А, пока, важнее, наполнять сайты контентом, но не ИИ-сгенерированным, а более-менее полезным.

                Возвращаемся к вашим «шаблонам». У меня шаблон, если уже говорить о нем, используется статический, в идеологии файл-сервера. Поэтому, про «плейсхолдеры» можно пока забыть, хотя я их и имел в виду, когда говорил о макетах отчетов в «1С». Мне вполне достаточно прямых ссылок на ресурсы, хоть локальные, хоть глобальные.

                Поэтому, здесь ваше определение шаблона – тоже, мимо!

                Если вы сами на ходу придумываете свои определения думаю тут даже и разговаривать дальше смыла нет.

                Да? А я думал, что вам просто возразить нечего, по существу, кроме цитирования учебников и Википедии. Хорошо, общайтесь тогда с теми, кто тоже умеет только читать, а не думать.

                От ваших веб страниц идёт кровь из глаз, если их задача окунуть посетителей в атмосферу уроков информатики в школе 2005 года, тогда да с этим справляются.

                Блин! Какие мы чувствительные? Прям, как барышня! «Форма – важнее содержания!» или «Понты – дороже денег!». Да, где-то я уже это слышал!


                1. khristm
                  23.02.2026 13:31

                  Ну, и что это меняет в моих рассуждениях? Этот «чертеж» или «структура» это просто текст html-страницы, которую вы обозвали «макетом». Не так ли? В чем суть, то? Почему бы не показать образец макета в чистом виде, чем без толку говорить об этом? Хотя, что это даст?

                  Текст или HTML теги и стили?

                  Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку?

                  Вот именно с вашей вот этой фразы ветка комментариев и началась, вы если не понимаете о чем рассуждаете зачем в споры то встреваете? Любой человек с двумя руками и начальными знаниями HTML макет вашей страницы за несколько часов сваяет если будет это первый раз делать.

                  Блин! Какие мы чувствительные? Прям, как барышня! «Форма – важнее содержания!» или «Понты – дороже денег!». Да, где-то я уже это слышал!

                  Веб страница это графическое представление данных, и вы туда добавили и фон, и цвета элементам, если вам так важнее содержание что же вы таблицами на белом фоне не обошлись, а начали украшательством заниматся? Значит форма вас тоже интересует ай-яй-яй.


                  1. Emelian
                    23.02.2026 13:31

                    Текст или HTML теги и стили?

                    Html-содержимое имеет текстовый формат, поэтому, формально, это текст. Теги – это ключевые (текстовые слова) обрамленные в специальные (текстовые) символы + атрибуты, в том же смысле. И стили, в этом значении, ничем не отличаются. Html, xml, содержимое скриптов и т.п. – это всё текстовый поток данных, в отличие от символов управления, которые могут быть представлены своими текстовыми кодами.

                    Поэтому, никакого противоречия здесь нет. Хотя, интерпретироваться внешними программами могут по-разному. Скажем, html-теги в Питоне, это классы и имеют собственные методы для работы. Но, от того не перестают быть текстом в своем внутреннем представлении.

                    Вот именно с вашей вот этой фразы ветка комментариев и началась, вы если не понимаете о чем рассуждаете зачем в споры то встреваете?

                    Статья как называется? «…популярные вопросы по HTML и CSS …». О чем говорил я? Я не знаю ответов на ваши «популярные вопросы», соответственно, ни на какую должность дизайнера либо «…эндера», даже для джунов, не пройду. Но, я в состоянии решать проблемы на эту тему, которые касаются лично меня, вот, смотрите пример моего сайта с моими разработками.

                    Что отвечают? Сайт – твой фигня! Сам ты – лопух, любой пре-джун – круче тебя в тысячу раз! Я – ладно, покажите работу джуна, который что-то там сваяет за «час», Не-е-е! Говорят, как бы, мне, не покажем, мол, «джентльменам принято верить на слово!» Я, ну и «флаг вам в руки»! Меня, моя работа и результаты устраивают, вашу критику, без примеров и демонстрации как «правильно» или «лучше», я не воспринимаю, можете продолжать бухтеть дальше. Какие проблемы? Мне от вас ничего не надо, а что надо вам от меня, я не понимаю до сих пор. Сказать вам, как красиво вы цитируете «Википедию»? Это, что единственный результат вашей работы? Покажите свои результаты, если мне понравится, скажу: «Вау-у-у!». А, иначе, за что вас хвалить?

                    Любой человек с двумя руками и начальными знаниями HTML макет вашей страницы за несколько часов сваяет если будет это первый раз делать.

                    Опять, двадцать пять! Хотя, нет, был «час», теперь уже «несколько часов». Ну и пусть ваш «любой человек» продемонстрирует это ссылкой. Только, теперь ставки повышаются. Мне ваш навороченный макет до лампочки, пусть покажет собственный контент! Именно свой, личный, а не корпоративный, где он там какую-то формочку прилепил.

                    Еще раз, разговоры «вообще» на меня не действуют, ни в положительном, ни в отрицательном смысле. Подкрепляйте свои слова личными результатами, это будет выглядеть, как-то, солидней.

                    Веб страница это графическое представление данных, и вы туда добавили и фон, и цвета элементам, если вам так важнее содержание что же вы таблицами на белом фоне не обошлись, а начали украшательством заниматься?

                    Во-первых, это мой не первый сайт, у меня их не менее десятка на просторах Интернета. Поэтому просто воспользовался своим готовым шаблоном, который не слишком раздражает.

                    Во-вторых, до сих пор намекалось, что оформляж моих сайтов, скажем мягко, ерундовый. Теперь, оказывается, что, какой-никакой, но есть. Так что выписываю себе дополнительный чек на 0.1 ставки дизайнера. Ок? Вы не против?

                    В-третьих, чувство красоты в выполнении своей работы никак не подразумевает отмену качественного содержимого либо доминирования над ним. По крайней мере, так, как я это понимаю. Я и код свой стараюсь оформлять красиво, хотя его мало кто видит, кроме меня.

                    Так что, это слабая претензия.

                    Значит, форма вас тоже интересует ай-яй-яй.

                    В дополнение, но не вместо! А так, с логикой у вас не очень! Не удивлюсь, если у вас нет высшего образования. Да и зачем оно современной молодежи? Там ведь не учат работе с Фигмой или Фигней, не помню точно :) . Зато определения, нужные HR, наизусть помнят.


                    1. khristm
                      23.02.2026 13:31

                      Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку?

                      Мне ваш навороченный макет до лампочки, пусть покажет собственный контент!

                      Понятно))

                      Так что выписываю себе дополнительный чек на 0.1 ставки дизайнера. Ок? Вы не против?

                      0,00000001 скорее

                      Мне от вас ничего не надо, а что надо вам от меня, я не понимаю до сих пор.

                      Сбить ни чем не обоснованую спесь с человека который делает веб поделки на уровне 10-ти классника и рассуждает о том что какие-то эфемерные джуны с этим не справятся.


                      1. Emelian
                        23.02.2026 13:31

                        Сбить ни чем не обоснованную спесь

                        Вы ведь не обижаетесь на мои слова? Вот и я тоже! Зато, сказали всё, что хотели :) .


    1. Wintz
      23.02.2026 13:31

      Интересно, а эти джуны сфарганят макеты сайтов, подобных моим, по быстрячку? Да еще с собственным дизайном, а не копией чужого?

      а джун-фронтендер он должен быть дизайнером? Да и у вас если что там нет дизайна.

      Смысл базовых знаний в том что это база для роста, фундамент для профессиональных знаний, а не какой-то отдельный скил


      1. Emelian
        23.02.2026 13:31

        а джун-фронтендер он должен быть дизайнером? Да и у вас если что там нет дизайна.

        Если вы собираетесь платить ему зарплату, то тогда можете указывать ему, что он «должен» или «не должен».

        Здесь речь идет о собственном пет-проекте, цель которого быть контейнером для моей развивающейся обучающей системы. Я не ищу работу ни «дизайнера», ни «фронтендера», ни «бекэндера». Но, вынужден заниматься элементами их работы, поскольку, проект делается на голом «энзазизьме».

        Опять же, мне не нужен дизайн ради дизайна. Я просто хочу иметь простую ссылку на все мои результаты (статьи, программы, данные, видео). И развивать я собираюсь их содержание, а не форму представления. Разве это не естественное желание? Или красивая упаковка важнее сути?

        Смысл базовых знаний в том, что это база для роста, фундамент для профессиональных знаний, а не какой-то отдельный скил

        Базовые знания нужно получать в ВУЗах, а не на курсах или самоучкой. Там, в любом случае ваши знания будут поверхностными. Это я вам говорю как человек, который закончил два полных дневных ВУЗа, в том числе, мехмат МГУ. Третьего ВУЗа, мне уже не надо, поэтому осваиваю ровно то, что считаю нужным, для собственных целей.


        1. AlexPershin
          23.02.2026 13:31

          Касаемо базовых знаний по чистому и глубокому HTML и CSS в вузах — это утопия. Там такого просто нет, оно никуда в программу не ложится.

          По JS ещё могут что-то глубокое дать, так как это более вузовская тема. И народ любит позаползать в фундаментальную теорию.

          Но чтобы в вузе глубоко разбирали вёрстку, ну или хотя бы глубоко заползали в алгоритмы раскладки (типа флексбокса), опираясь на спеки — такого почти нигде нет. А ведь разбор фундаментальных алгоритмов на базе первоисточников — это и есть уровень вуза.


          1. Emelian
            23.02.2026 13:31

            Фундаментальные знания – это не html и не верстка. Все это можно легко освоить самостоятельно. Вот пример. Понадобилось скачать очередной онлайн-словарь, для изучения иностранных языков. Один загрузил с помощью Питона. Там защита была простая, достаточно было делать временную задержку. Второй уже использовал капчу. На Питоне предлагают бороться с капчей, но их методы сложные и дорогие. Поэтому, я пошел другим путем – использовал расширения Хрома, но не последнего выпуска, а для старого, поддерживающего вторую версию манифеста (в новых релизах Хрома используется только третья версия манифеста, более ограничительная по возможностям «борьбы» с сайтами).

            Код расширения использует Яву-скрипт. Его я не знал. Взял книгу, полистал, посмотрел пару примеров на Гитхабе и «вуаля», обходить капризную капчу я научился и сайт, со словарем, соответственно, скачал. Что понравилось, скрипт расширения оказался очень маленьким, практически, полностью помещается в экран монитора.

            Все, больше JS мне не понадобился, и улучшать свои знания по нему я не стал. Хотя, вру, еще немного поэкспериментировал с «третьими» сайтами. Но, там данные были явно хуже, а возни было сильно больше, в т.ч., и c программированием на JS. Поэтому, я не очень люблю глубокомысленные разговоры про стеки и «фундамент». Ребята, скачайте, онлайн-словарь с капчей на полторы сотни тысяч html-страниц. И вытащите из них полное текстовое дерево словарных статей со всей параметризацией, вот тогда и рассказывайте о «стеке», «фундаменте», уровне ВУЗа и т.п.

            Все эти разговоры о важности / неважности чего-либо, от лукавого. Демонстрируйте свои мысли результатами. Я всегда стараюсь демонстрировать, но, народ обижается, мол, хорош, себя рекламировать. Но, мне реклама не нужна, я просто хочу, чтобы было меньше голословных утверждений.

            Да, и, по поводу «фундаментального образования» в моих двух ВУЗах. В первом, я скорее отдыхал, чем учился, этот период – так и называл: «Отдых перед жизнью!». Зато поездил по всему СССР. в студенческих практиках, мир повидал. Распределение получил на работу во Всесоюзный НИИ, в областной город, где мне сразу предложили встать на льготную очередь, на бесплатную квартиру, как молодому специалисту. Однако, я отказался, так как хотел учиться дальше. Отработал положенный срок по распределению и поступил на первый курс, по специальности «математика», в Московском Университете (куда поступали только в 17 лет, либо никогда, не считая меня, конечно).

            Учиться было невероятно трудно, для меня, до пятого курса дошло только половина первокурсников. Но, именно там я получил настоящее «фундаментальное образование», хотя персональные компьютеры увидел только на пятом курсе. Более того, вся моя архитектура жизни определилась учебой в Университете. О чем, я уже много раз писал здесь.

            Могли бы мне дать нечто похожее любые другие формы учебы? Нет, конечно! Программирование на ПК я выучил самостоятельно, Написал учетную систему и внедрил на паре производственных предприятий, что и кормило меня 20 лет. Все языки программирования, включая ассемблер, осваивал самостоятельно. Сейчас, вот, развиваю собственную обучающую систему. И всё, безо всяких новомодных изобретений, которыми так богата современная IT-индустрия.

            Да, на современную работу я эти фильтры не пройду, в силу наших различных представлений «о прекрасном». Но. к счастью, мне это и не нужно. Однако, современной молодежи сочувствую, ей явно труднее, чем было нам, а смысла в их суете – куда меньше.


            1. AlexPershin
              23.02.2026 13:31

              Всё, что угодно можно освоить самостоятельно. Это не критерий фундаментальности. Но для текущего веба, когда все сидят на конкретных высокоуровневых инструментам, знание любой чистой технологии, причём глубокое, уже можно считать фундаментальным.

              Что касается вашей задачи, ну это частный пример, который никак не относится к профессиональной деятельности фронтендера


    1. logiciel
      23.02.2026 13:31

      Мне очень понравился ваш сайт, честно! Я динозавр из 1990-х :)))
      Совет: добавить в head тег <meta name="viewport" content="width=device-width, initial-scale=1">, чтобы размер шрифта оставался читаемым, и сделать ссылки не зависящими от страницы, на которой они находятся, то есть, например, вместо <a href="articles.php"> писать <a href="/articles.php">. Тогда линки не сломаются при изменениях.


      1. Emelian
        23.02.2026 13:31

        Спасибо! Обязательно учту ваши замечания, когда буду добавлять новое содержимое к сайтам. Пока, вот, погряз в очередной задаче, из которое уже неделю не могу выбраться :) .


  1. Delka
    23.02.2026 13:31

    Вопросы по HTML и CSS всё реже встречаются на собеседованиях для фронтендеров

    И это очень плохо, потому что прошло уже 10 лет и выросло поколение которое вообще не умеет верстать.

    Они могут подогнать наугад/с Ai "чтоб было как надо при одном разрешении в 1366 при условии что в этот блок приходят только вот эти данные и никакие другие.

    Когда такой разработчик приходит на проект где реальный сайт и CMS может отдавать разные данные, которые определяются контент-эдиторами, то всё, приехали.

    "А как мне в React прочитать значение css-переменной?" Они даже не понимают как вообще браузер работает.


    1. melnik909 Автор
      23.02.2026 13:31

      Позиция "Фронтенд-разработчик" стала совсем другой, чем 15 лет назад. И это нормально. Лично мне жаль, что сейчас в принципе нет специалиста, который думал о верстке, и как следствие опыте пользователя.

      Но имеем то, что имеем. Значит так и должно быть.


      1. DmitryOlkhovoi
        23.02.2026 13:31

        Все есть. Например один из проектов зарабатывает партнерским маркетингом, если хочешь, что бы цена на рекламу была ниже, то нужен адаптивный и быстрый сайт.


  1. Maevelence
    23.02.2026 13:31

    Лично я считаю, что аргумент про читаемость кода притянут за уши. Я его лучше бы не называл

    Callback-hell значит у нас есть, а div-hell вместо имеющей смысловую структуру хайпертекстовой разметки это другое

    Довольно странно забивать на html и полностью полагаться на БЭМ. Это в лучшем случае, в худшем придется запоминать вложенность дивов и чем они там занимаются


  1. francyfox
    23.02.2026 13:31

    дядь, таких собесов не бывает. Начнём с того что в 2026 есть вакансии только на middle+, потому что все накручивают, джун даже до собеса не дойдет, там 100500 откликов, его автофильтром срубит


    1. AlexPershin
      23.02.2026 13:31

      сейчас и мидл+ до собесов не доходит, так что некоторые скручивают до джуна, чтобы хоть куда-то попасть


      1. pavlovplaton
        23.02.2026 13:31

        Обесценивание это гиблое дело, точно такие же шансы пройти мимо собеседований, в лучшем случае даёт возможность попасть на интенсивны сроком в месяца два, где из 10-15 человек могут предложить работу 2-3 спецам, что тоже сомнительная стратегия для попадания в штат разрабов


        1. AlexPershin
          23.02.2026 13:31

          ну, когда рынок стравливает низкоквалифицированные кадры с перегретыми зарплатами, больно становится всем. так-то ведь нездоровая была ситуация, когда "мидл" с 2 годами опыта, а по факту сборщик-на-реакте-из-готовых-компонентов получал 150+. а откуда там навыков и глубокого понимания просто чистого js возьмётся на такую зп, даже не говоря о владении всем стеком фронта (чистая вёрстка, чистый js, фреймор). вот от всей этой красоты и избавляются радостно


          1. khristm
            23.02.2026 13:31

            Вопрос от нубов, а разве получится пользоваться реактом не зная/не понимая чистого js?


            1. AlexPershin
              23.02.2026 13:31

              Вполне. Какую-то часть js знать придётся, но в остальном всё меняется на инструменты и конструкции самого реакта. Таким же образом раньше появлялись верстальщики на бутстрапе, а сейчас верстальщики на тейлвинде, хотя тейлвинд ближе к исходным конструкциями css, чем бутстрап


  1. Beholder
    23.02.2026 13:31

    дочерние элементы выстраиваются в строку без переноса на новую

    И тут включаем flex-wrap: wrap;


    1. AlexPershin
      23.02.2026 13:31

      Кстати вот метафора с одномерной и двумерной сеткой — одна из самых неудачных, которая появлялась во фронтенде, но прижилась так, что не выжечь


  1. AlexPershin
    23.02.2026 13:31

    Надо еще каверзный вопрос про ссылку, в которую можно положить див, добавить


    1. melnik909 Автор
      23.02.2026 13:31

      Мне кажется, этот вопрос остался в прошлым. Я не встречаю его совсем.


      1. AlexPershin
        23.02.2026 13:31

        ну или он очень специфичный и собеседущие сами про такие тонкости не знают =) это не про отличие блочных и строчных спрашивать