Как стать автором
Обновить

Комментарии 17

Какая нечитабельная жесть

Пожалуйста укажите, как мне её написать понятней - буду премного благодарен!

Прошу прощения, я непонятно выразился. Это я не про статью, а про синтаксис шаблонов "до".

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

Когда шутка затягивается, она перестаёт быть интересной.

Автор поста, на который вы ссылаетесь в первом предложении, просто пошутил.

вовсе отказаться от одного из инструментов фронт‑энд разработки

Такие попытки есть, и они даже работают. Только за основу берут javascript. Решения css-in-js интегрируют стилевые таблицы в css, а, например, библиотека bem.js позволяет описывать html в json структуре. И это выглядит более логичным, чем запихнуть html в css.

Шутка перестала быть шуткой, да и не была она таковой - ещё до публикации поста от автора идеи был вариант, который это реализовывал, хоть и по другому и в ином виде (где-то год назад вышла первая версия).
Кстати, автор идеи одобрил инициативу и посчитал, что шутка перестаёт быть шуткой, но становится чем-то полезным.

Попытки заместить HTML есть, они работают, что я конечно не отрицаю, вроде я о таких штуках упоминал. Мне просто не нравится, как они это делают, как-то топорно.

Если это не шутка, то какая вообще цель преследуется и какие проблемы решаются?

Вы вообще ничего об этом не написали, а автор той статьи говорит лишь о DRY - якобы избавляется от проблем с повторением сущностей. Он пишет:

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

Резонно. Смотрим, как это у вас решается:

.block {
....
}

/* много кода или где-то на другой странице */

/* тут нужно повторить блок */

.block {}


Надеюсь, я правильно понял, что для повтора блока не нужно его описывать заново, и лишь написать селектор?

Тут нам приспичило изменить название класса block на section. Мы поменяли в первом участке кода и забыли про второй. Получили ровно ту же проблему, что была процитирована выше.

Не с той стороны заходите. Суть в том, что бы писать CSS, но не писать HTML.
Библиотека конвертирует CSS в HTML, с возможностью записи в файл, используя для этого некоторые примочки.

Суть то в том, что CSS нередко дублирует структуру HTML - так зачем писать одно и тоже на разных языках в двух файлах, если можно написать всё в одном и оно автоматически продублируется в другой?

Скоро будет работать во всех браузерах:

<section id="some-id">
  <style>
    @scope {
      :scope {
        border: 2px solid;
        padding: 1rem;

        & > header {
          font-weight: 600;
        }

        & > p {
          font-style: italic;
        }
      }      
    }
  </style>

  Some Text
  <header>Section Title</header>
  <p>Section Text</p>
</section>

Гораздо читабельнее.

А, вы про вложенность? Да, это отличная штука, жаль что сделана кривовато (не работает как конкатенация, очень ограничивает).
Поддержка библиотекой данной функции, впрочем, не от меня зависит - она зависит от того, будет ли кто её встраивать в свои преобразователи CSS в AST, вроде этой. Они не торопятся, я не видел ни одной, что поддерживала бы.

Подскажите как создавать сложные вложенные элементы внутри других элементов?
Еще также не понятно как создать один стиль или шаблон и применить его ко списку элементов?

создавать сложные вложенные элементы внутри других элементов

Тут нужен пример, слишком абстрактная формулировка.

как создать один стиль или шаблон и применить его ко списку элементов

По принципу миксина - написал там, используешь где угодно - никак, это делается пост/предпроцессорами.
Если вам нужно создать стиль, который будет применён на группу элементов, но без создания элемента - вот пример:

:is(span, p) {
  color: red;
}
/* или */
main > span,
main > p {
  color: red;
}
/* или */
* span,
* p {
  color: red;
}

span {
  --text: 'Span 1';
}
p {
  --text: 'Text 2';
}

Как вы зае Простите, я так и не понял, чем же не устроил подход реакта, tsx и стилизованных компонентов. Всё декомпозировано и типизировано, что же еще нужно то.

Меня вот смущают ультралибералы в IT-сообществе, но я же терплю их. И вас прошу держать себя в руках.

Меня не устраивает в JSX и стиль-компонентах многое, но вкратце: вместо того, что бы знать 3.5 технологии (CSS, HTML, JS и JSX) я хочу знать одну, которая может всё, что могут эти инструменты. Как известно, нет предела совершенству.

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

Ну, я сдержался, зачеркнул.

Не знаю, пока рука платящая требует больше реактивности и, одновременно, ssr за те же деньги, и вот это настоящая боль. Дело в том, что богатые и уважающие себя проекты (а зачем нам другие?) имеют собственную библиотеку стилизованных в соответствии со стайлгайдом компонентов, и фактически чистый html особого интереса не представляет. А css постоянно развивается и сейчас проще взять рекомендуемое копилотом решение и допилить до нужного вида, т.е. как таковой боли с css нет.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории