Комментарии 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 нет.
Проблем ни с одним инструментом технически нет, что не смущает тех, кому того, что работает - мало. На планете есть... удивительные люди, которым всё время мало и они хотят большего / лучшего. Ну, вот я один из них. Пожалуй, этот ответ всеобъемлющий, ну не дискутировать же здесь? В конце концов, со своей логики мы оба правы.
DRY-фреймворк: продолжение