All streams
Search
Write a publication
Pull to refresh
13
0
Send message

Жаль, что нет алгоритма расчета flex-shrink (как это сделано для flex-grow) для полноты статьи.

image.src = URL.createObjectURL(file);

Затем этот же image после onload отрисовать на canvas через ctx.drawImage.
Пример — https://codepen.io/monochromer/pen/MWgOWyx?editors=0010

Написать можно и в другом виде:


@media (bp.$xs <= width < bp.$sm) {
  /* ... */
}

Не вижу ничего плохого в том, чтобы руками писать media queries в современном виде, слегка приправленные sass'ом и обработанные postcss-плагином:


/* файл breakpoints.scss */
$xs: 320px; 
$sm: 576px;
$md: 768px;
$lg: 992px;
$xl: 1200px;

/* файл main.scss */
@use 'breakpoints' as bp;

@media (width >= bp.$xs) and (width < bp.$sm) {
 /* ... */
}

И для этого надо открыть отдельную страницу с достаточно тяжеловесной WebIDE.

Да, но в статье компонент сделан так, что он работает только с одним файлом-иконкой.

Если на экране будет 20 разных иконок, то будет 20 запросов. Последующие загрузки будут оптимизированы http-кэшем, но тогда уж лучше склеивать все символы в один файл.

Как я понял, основная идея подхода, как и сказал автор — "никаких лишних стилей". Это хорошо работает, когда в проекте есть достаточно строгая дизайн-система с ограниченным набором цветов, отступов и пр. В таком случае при создании новых компонентов, экранов (страниц) CSS не должен расти в размерах (или не на много прибавит веса).


Но все, сто может быть автоматизировано, должно быть автоматизировано. Создавать россыпь атомарных классов должен некий сборщик/компилятор, а не разработчик.


Мое видение работы:


  1. В режиме разработки пишем как обычно:
    <button class="button" />

    .button {
    display: inline-flex;
    padding: 12px 16px;
    color: #333;
    }
  2. В режиме тестирования отладки компилятор уже создал атомарные классы, но оставил возможность искать нужный компонент прямо в инспекторе браузера. Это удобно для разработчиков/дизайнеров.
    <button class="d-if py-3 px-4 c-text" data-original-class="button" />
  3. Для режима эксплуатации удаляем data-атрибуты (или можем оставить, если HTML не сильно раздувается).
    <button class="d-if py-3 px-4 c-text" />

Поэтому лучше взять что-то вроде CSS-blocks или Deterministic StyleSheets.

  1. Раз уж добавил класс .button, то почему бы и все нужные стили на него не навесить?
  2. Есть у меня компонент — в виде макроса для nunjucks:
    {% macro button() %}
    <button class="d-flex px-4 a-1 b-2 c-3 d-4">
    {{ caller() }}
    </button>
    {% endmacro %}

    Только как найти его в исходниках, глядя в инспектор браузера?


Пишите код текстом, пожалуйста!

А что делать, если у какого-нибудь компонента нужно поменять оформление с px-4 на px-6? Предположим, что нет никакого фреймворка. Как найти нужный html-шаблон в проекте? Если сделать поиск редакторе по px-4, то, боюсь, там будет 100500 совпадений.

Попробовал распечатать локальный html-файл с картинками в Chrome. Фоновые картинки не подгрузились.


Где-то советуют использовать стили


body {
  -webkit-print-color-adjust: exact !important;
  print-color-adjust: exact !important;
}

Но мне они не помогли. Задал явно формат:


@page {
  size: A4 portrait;
}

и заработало. Странно.


Могу ошибаться, но в wkhtmltopdf (как и в PhantomJS) используется древняя версия движка Webkit, еще та, что была до разделения на собственно Webkit и Blink (который сейчас в Chrome). Поэтому для печати лучше использовать Puppeteer или Playwright.

Скорее будет использоваться файл deps.ts с реэкспортом:


export { moment } from `<URL>`;

И тут мы возвращаемся к файлам, где объявлены все зависимости.


Хотя это, возможно, будет удобно, где нужно в зависимости от переменных окружения подсунуть другую реализацию модуля, для тестов, например.

ts-node нужен для разработки, а не для реальной эксплуатации.

А механизм import загружает модули в асинхронном режиме...

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

Больше нет package.json, теперь принято использовать deps.ts

Но ведь и в package.json для Node.js можно написать пути до git-репозиториев с указанием ветки/теги/коммита, а не название пакета в централизованном хранилище.

<link rel="preload" href="best_font_ever.otf" as="font" type="font/otf" crossorigin="anonymus">

А не пробовали еще использовать оптимизированный формат для шрифтов — woff2 или woff и удалять неиспользуемые глифы?

Information

Rating
6,291-st
Registered
Activity