Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавляет статью про Псевдоприватные кастомные свойства #5577

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

Alex-Andr-19
Copy link

@Alex-Andr-19 Alex-Andr-19 commented Dec 6, 2024

Описание

Создание статьи в раздел Рецепты про перенос миксинов SASS'а на переменные CSS в атомарных классах

Чек-лист

  • Текст оформлен согласно руководству по стилю
  • Ссылки на внутренние материалы начинаются со слеша и заканчиваются слэшем либо якорем на заголовок (/css/color/, /tools/json/, /tools/gulp/#kak-ponyat)
  • Ссылки на картинки, видео и демки относительные (images/example.png, demos/example/, ../demos/example/)

@github-actions github-actions bot added the рецепт Контент для Рецептов label Dec 6, 2024
```

Ранее уникальной для препроцессоров таких как **Less, SASS и Stylus** была возможность создавать переменные прямо в стилях, что не мог предоставить CSS.
Но этот пункт относительно давно перестал быть уникальной частью этих библиотек – были созданы `custom variables` в CSS'е:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Душнота:
Всё таки называть кастомные свойства кастомными переменными не совсем корректно. Посколько это именно свойства. Они наследуются и позволяют делать вещи, которые не мсогут сделать препроцессоры так же изящно. Старое видео Макеева по теме

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо, обязательно исправлю

Comment on lines 86 to 90
Пытаясь найти способ реализовать миксины на CSS'е, я набрёл на видео (ссылку потерял), в котором была концепция "виртуальных" CSS переменных. Пример:

```css
span.plain-text {
--_text-color: var(--text-color, #ddd);
Copy link
Contributor

@baileys-li baileys-li Dec 6, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это так называемые sudo кастомные свойства / псевдо приватные кастомные свойства
Скорее всего речь про видео Кевина Повелла

Так же оригинальный рецепт Леи Веру

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, именно из этого видео взял идею. Обязательно вставлю как источник

Comment on lines 115 to 126
Я понял какой потенциал стоит за таким подходом я решил применить это к стилизации размера текста:

```css
[class*="static-font"] {
--_font-size: var(--font-size, 1em);
--_line-height: var(--line-height, calc(var(--_font-size) + 4px));

font-size: var(--_font-size);
line-height: var(--_line-height);
}

.static-font__M {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вне контекста этот код выглядит перегруженным и нарушением принципа KISS.

Не понятно, что мешает сделать так

<span class="static-font another-class">Lorem ipsum</span>
.static-font {
    font-size: 1em;
    line-height: calc(1em + 4px);
}

.another-class {
    font-size: 20px;
    line-height: 26px;
}

То есть старый добрый каскад даёт тот же эффект при меньшем коде.

Обычно приватные кастомные свойства нужны для компонентных фреймворков, где ты не можешь быть на 100% уверен в каком порядке сборщик соберёт стили. И в итоге тебе, чтобы гарантировано перебить внутренние стили компонента нужно либо перебивать вес селектора, либо делать кастомные свойства с дефолтом (в том числе и псевдо приватные), либо разбить по css слоям, если браузерная поддержка позволяет.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment on lines 130 to 135
@media (max-width: 1024px) and (min-width: 510px) {
--font-size: 18px;
--line-height: 22px;
}

@media (max-width: 509px) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: статья всё-таки про развитие css, можно использовать более понятный синтаксис

Suggested change
@media (max-width: 1024px) and (min-width: 510px) {
--font-size: 18px;
--line-height: 22px;
}
@media (max-width: 509px) {
@media (width <= 1024px) and (width >= 510px) {
--font-size: 18px;
--line-height: 22px;
}
@media (width < 510px) {

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо большое, сам не знал, теперь буду использовать

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да не за что

@solarrust solarrust changed the title feat: Create article about virtual variables Добавляет статью про Виртуальные переменные Dec 6, 2024
@Alex-Andr-19 Alex-Andr-19 changed the title Добавляет статью про Виртуальные переменные Добавляет статью про Псевдоприватные кастомные свойства Dec 6, 2024
@ra1nbow1
Copy link
Member

ra1nbow1 commented Dec 6, 2024

@solarrust @HellSquirrel @TatianaFokina девочки, привет! Может покажусь каким-то негативно настроенным, но вам не кажется, что повествование от первого лица выглядит не совсем уместно? 😁

Copy link

github-actions bot commented Dec 6, 2024

Превью контента из a47bbf1 опубликовано.

@Alex-Andr-19
Copy link
Author

@solarrust @HellSquirrel @TatianaFokina девочки, привет! Может покажусь каким-то негативно настроенным, но вам не кажется, что повествование от первого лица выглядит не совсем уместно? 😁

Жду обратной связи. Если надо – поправлю. Сам думаю, что не уместно было делать акцент на первом лице.

Copy link
Member

@Inventoris Inventoris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Alex-Andr-19 Привет!

Во-первых, большое спасибо тебе за статью 🌟

Во-вторых, вот что думаю: я пробежался по изменениям, и там довооольно много чего стоит пересмотреть. Я предлагаю тебе для начала взглянуть на документацию, особенно заострить внимание на структуре статьи и стайлгайде. Затем прочесть 5-10 любых статей на Доке, лучше из раздела рецепты (ты ведь туда хочешь сделать вклад?), и обратить внимание на общий вайб, на подход к изложению итд. А потом оценить материал самостоятельно ещё раз, хорошо?

@Alex-Andr-19
Copy link
Author

@Inventoris Хорошо, спасибо за совет

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
рецепт Контент для Рецептов
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants