достаточно воспользоваться расширением Auto Rename Tag
Достаточно воспользоваться встроенным функционалом HTML mirror cursor или HTML Rename Tags, или воспользоваться командой опять же встроенного плагина Emmet — Emmet: update tag.
Работу с element.style.height === '0px' я б заменил на работу с каким-нибудь классом, например,
.is-collapsed {
height: 0;
}
А layout-триггеры можно заменить на requestAnimationFrame (но с небольшим кроссбраузерным хаком):
function onSchedule(fn) {
/* да, здесь два requestAnimationFrame */
requestAnimationFrame(function() {
requestAnimationFrame(function() {
fn();
});
});
}
По поводу npm-пакета. Почему стандартный модуль zlib указан в зависимостях? Также в zlib есть поддержка brotli, начиная, если не путаю, с node 11. Так что утилиту можно было бы разработать полностью без зависимостей.
Давайте еще воспользуемся npm-хуками и добавим postbuild скрипт, который будет копировать README.md в папку со сборкой. Так мы никогда не забудем обновить описание пакета на NPM.
Почему бы не добавить README.md и папку со сборкой в секцию files в package.json?
И еще вопрос: кто или что в итоге вызывает npm-скрипт release? По идее, он должен вызываться при merge в master-ветку?
Так избавляемся от лишней вложенности, повышения специфичности, трудного чтения препроцессорного костыльного (~'...') кода. А отвязка от html в селекторе дает возможность оформить разные элементы на странице разными темами, например, секции на лендинге.
В примерах автора это не так очевидно, но данная техника позволяет добиться желаемого. Выставите значение переменной --container-width, например в 1200px, и посмотрите, как это работает — https://jsfiddle.net/z86wt2uh/
Вот так точно не следует делать. Атрибут
hidden
нужно ставить/удалять с помощью JavaScript.Только Facebook скорее всего использует Relay, а не Apollo.
Пишите код текстом, пожалуйста!
Благодаря HTML mirror cursor даже
F2
нажимать не надо — просто меняешь название, а оно редактируется как в открывающем теге, так и в закрывающем.Достаточно воспользоваться встроенным функционалом HTML mirror cursor или HTML Rename Tags, или воспользоваться командой опять же встроенного плагина Emmet —
Emmet: update tag
.Попробовал еще с модулем
esm
и конфигом `ecosystem.config.js
` дляPM2
:Логи без ошибок.
Попробовал так (
npm run cluster
):Вроде запустилось:

Скринридер ничего не рендерит, а только читает.
Ждем релиза Network Information API во всех мажорных браузерах.
Jake Acrhibald показывает пример, почему нужно 2-а
requestAnimationFrame
.Может, все-таки "Контуры"?
Для этих целей существует Abort Controller, который, к слову, предназначен для отмены любых асинхронных операций. Есть полифилл.
Работу с
element.style.height === '0px'
я б заменил на работу с каким-нибудь классом, например,А layout-триггеры можно заменить на
requestAnimationFrame
(но с небольшим кроссбраузерным хаком):Полный пример — https://jsfiddle.net/95tnmdyr/
По поводу npm-пакета. Почему стандартный модуль
zlib
указан в зависимостях? Также вzlib
есть поддержкаbrotli
, начиная, если не путаю, сnode 11
. Так что утилиту можно было бы разработать полностью без зависимостей.Можете уточнить, в чем проблема при таких условиях?
Почему бы не добавить README.md и папку со сборкой в секцию
files
вpackage.json
?И еще вопрос: кто или что в итоге вызывает npm-скрипт
release
? По идее, он должен вызываться при merge в master-ветку?Зачем здесь вообще использовать препроцессор? Просто пишем:
Так избавляемся от лишней вложенности, повышения специфичности, трудного чтения препроцессорного костыльного (~'...') кода. А отвязка от html в селекторе дает возможность оформить разные элементы на странице разными темами, например, секции на лендинге.
А если несколько рядов?
В кругу тех, кто занимается версткой, «переполнение» вполне себе нормальный и часто используемый термин.
В примерах автора это не так очевидно, но данная техника позволяет добиться желаемого. Выставите значение переменной
--container-width
, например в 1200px, и посмотрите, как это работает — https://jsfiddle.net/z86wt2uh/