Обновить
13

Пользователь

3
Подписчики
Отправить сообщение

По мере развития css в котором теперь и переменные, и функции, и обсуждается внедрение mixins 

Только всё это сейчас не помогает для изоляции названий пользовательских свойств. Нет гарантий, что, подключая какую-нибудь библиотеку для календаря, там не окажется `--token-color-primary` как у вас в проекте. Библиотеки типа StyleX дают возможность устранить коллизии названий "CSS-переменных". Правда, отлаживать в инспекторе мучительно больно.

Сейчас эту проблему решили инкрементальной сборкой. Пересобирается только изменившаяся страница. Eleventy — через плагины.

А такие точно есть? Сейчас в документации Eleventy такая функциональность помечена как to-do.

От препроцессоров - да, от БЭМ очень сложно отказаться

Можно не ждать и принести свое предложение в https://github.com/w3c/csswg-drafts/issues

А есть proposal?

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

Да, была неплохая статья с объяснением причин и инструментом для подбора значений, которые не ломали бы доступность.

Разве это можно реализовать на препроцессорах?

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

@property --_vw {
  syntax: "<length>";
  initial-value: 0px;
  inherits: false;
}

@function --viewport-scale(--min <number>: 300, --max <number>: 1200) returns <number>  {
  --_vw: 1vw;
  --_unitless-viewport: calc(tan(atan2(var(--_vw) * 100, 1px)));
  --_clamped-viewport: clamp(var(--min), var(--_unitless-viewport), var(--max));  
  --_viewport-scale:
    calc(
      (var(--_clamped-viewport) - var(--min)) /
      (var(--max) - var(--min))
    );
  result: calc(var(--_viewport-scale));
}

body {
  margin: 0;
  min-height: 100dvh;
  background-color: rgb(255 100 50 / --viewport-scale());
  font-size: calc(--viewport-scale(100, 800) * (72px - 20px) + 20px);
}


Мне кажется, что так не очень понятно, в чём же прелесть правила @function. Давайте добавим ещё медиа-запросы.

Не очень удачный пример. Без функции даже проще:

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

  @media (width > 640px) {
    --columns: 2;
  }

  @media (width > 1200px) {
    --columns: 3;
  }
}


Можно было бы стилизовать нативные элементы progress и meter. Но там больше дополнительных действий по убиранию оформления по умолчанию

Со "срезами" как-то всё туманно.

height: 100vh; /* ← высота замкнута внутри среза */

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

Те же табы недоступны с клавиатуры

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

.awesome-media-container {
  position: relative;
  padding-top: 100%;
}

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

Как легко понизить специфичность селектора при рефакторинге кода

Я для этого использую  :where. Например, .selector:where(.selector) {}

Отображение со свойством empty-cells сильно зависит от border-collapse

С прошлого года у нас появилось ещё свойство text-align-last.

Странно, я это свойство в 2015-ом году использовал как улучшение.

А здесь нужен interface, если будут классы-имплементаторы.

Делать реализацию от типа тоже можно

А почему не хватает кэша для самих файлов, которые указываются в early hints?

Early hints как раз пришёл на смену http/2 push.

1
23 ...

Информация

В рейтинге
7 324-й
Зарегистрирован
Активность