+
+ {/each}
+
diff --git a/src/routes/blog/html-in-css/+page.svx b/src/routes/blog/html-in-css/+page.svx
index c41b72e..a2ccb65 100644
--- a/src/routes/blog/html-in-css/+page.svx
+++ b/src/routes/blog/html-in-css/+page.svx
@@ -1,9 +1,10 @@
---
-title: "DRY-фреймворк: как сократить HTML-код и писать только на CSS"
+title: "HTML in CSS: как сократить HTML-код и писать только на CSS"
+date: "2024-08-01"
---
- 2024-08-01
+ {date}
# {title}
@@ -12,17 +13,17 @@ title: "DRY-фреймворк: как сократить HTML-код и пис
### Принцип DRY
-Представьте: у вас есть страница со скопированным кодом. Если заменить одну строку в CSS, придется вносить изменения в зависимые блоки. А если вдруг забыли их поменять, то, скорее всего, вас будет ждать долгий поиск и мучительное решение проблемы.
+Представьте: у вас есть страница с неким взаимосвязанным кодом. Если заменить одну строку в одном фрагменте, придется вносить изменения в зависимые блоки. А если вдруг забыли их поменять, то, скорее всего, вас будет ждать долгий поиск и мучительное решение проблемы.
-Чтобы предотвратить ошибку, я решил придерживаться главной заповеди чистого кода — DRY, Don’t Repeat Yourself. Принцип помогает сократить повторяющийся код за счет разделения проекта на мелкие независимые модули. Туда можно с легкостью вносить новые изменения — другие блоки не пострадают.
+Чтобы предотвратить ошибку, я решил придерживаться главной заповеди чистого кода -- DRY, Don’t Repeat Yourself. Принцип помогает сократить повторяющийся код за счет разделения проекта на мелкие независимые модули. Туда можно с легкостью вносить новые изменения -- другие блоки не пострадают.
-DRY замотивировал меня разработать такой проект, в котором принцип осуществлялся на 110%. Изначально, чтобы сверстать страницу, нужно было описать структуру документа в HTML, а потом — в селекторах на CSS. Приходилось проделывать работу дважды.
+DRY замотивировал меня разработать такой проект, в котором принцип осуществлялся на 110%. Изначально, чтобы сверстать страницу, нужно было описать структуру документа в HTML, а потом -- в селекторах на CSS. Приходилось проделывать работу дважды.
-Стало интересно, что будет, если поменять структуру документа. Перестать тратить время на написание кода в двух местах и сконцентрироваться только на CSS? В своем фреймворке я оптимизировал структуру и сделал ее намного удобнее (вот только для кого?).
+Стало интересно, что будет, если поменять структуру документа. Перестать тратить время на написание кода в двух местах и сконцентрироваться только на CSS?
### Работа с фреймворком
-Кратко расскажу о принципе работы фреймворка. HTML in CSS — это способ избежать повторяющийся код. В нем можно писать только на CSS, HTML будет генерироваться самостоятельно.
+Кратко расскажу о принципе работы фреймворка. HTML in CSS -- это способ избежать повторяющийся код. В нем можно писать только на CSS, HTML будет генерироваться самостоятельно.
Перед вами стандартная страница с версткой:
@@ -49,10 +50,10 @@ DRY замотивировал меня разработать такой про
```
Синьоры и сеньориты среди вас, вероятно, заметили, что лишняя информация находится:
-- в HTML — `h1 id="title"`;
-- в CSS — `h1#title {`;
-- в HTML — `main id="main"`;
-- в CSS — `main#main`.
+- в HTML -- `h1 id="title"`;
+- в CSS -- `h1#title {`;
+- в HTML -- `main id="main"`;
+- в CSS -- `main#main`.
HTML полностью повторяет код в CSS, поэтому я решил убрать содержимое тега ``. Без него мы не потеряем ничего, кроме контента:
@@ -84,7 +85,7 @@ HTML полностью повторяет код в CSS, поэтому я ре
HTML in CSS можно использовать практически на любом коде сайта, но есть несколько оговорок.
-Селекторы могут создать только один элемент и не более — двух одинаковых id не бывает.
+Селекторы могут создать только один элемент и не более -- двух одинаковых id не бывает.
```css
#parent > #child {}
@@ -105,7 +106,7 @@ HTML in CSS можно использовать практически на лю
О проекте и его особенностях мы узнали. Теперь рассмотрим, как использовать ссылки, вложенность, порядок и другие функции с помощью инструмента.
-У фреймворка есть «козырь в рукаве» — это селекторы атрибутов. Он предлагает широкий выбор элементов для разработки: от картинок и видео до айфреймов. Мы часто будем использовать его в наших примерах.
+У фреймворка есть «козырь в рукаве» -- это селекторы атрибутов. Он предлагает широкий выбор элементов для разработки: от картинок и видео до айфреймов. Мы часто будем использовать его в наших примерах.
### Ссылки
@@ -249,23 +250,23 @@ a#kopyl-link[href="kopyl.dev"][target="_blank"] {
### JavaScript
-К сожалению, фреймворк не поддерживает JavaScript, но это не мешает подключить к нему внешний файл — `main.js`. Да и никто не запретит нам описывать селекторы для тегов `script` и добавлять туда атрибуты.
+К сожалению, фреймворк не поддерживает JavaScript, но это не мешает подключить к нему внешний файл -- `main.js`. Да и никто не запретит нам описывать селекторы для тегов `script` и добавлять туда атрибуты.
```css
script#my-script[src="/main.js"] {}
```
-В `main.js` можно использовать любой интерактив, который нужен сайту, — например, обработку событий, клиентский роутер и другие.
+В `main.js` можно использовать любой интерактив, который нужен сайту, -- например, обработку событий, клиентский роутер и другие.
## Заключение
-Возможно, некоторые уже захотели переписать свой продакшн-сайт на HTML in CSS, но мне жаль вас огорчать — на самом деле это фреймворк-шутка.
+Возможно, некоторые уже захотели переписать свой продакшн-сайт на HTML in CSS, но мне жаль вас огорчать -- на самом деле это фреймворк-шутка.
Одним вечером мне стало интересно, как парсится CSS и как выглядит его структура. В процессе изучения пришла в голову идея создать свой фреймворк. Как говорится, закрепил теорию практикой. Кстати, фреймворк занимает около 120 строк неубористого кода.