Search
Write a publication
Pull to refresh
14
0
Send message
@media (min-width: 400px) {
  img[hidden] {
    display: block;
  }
}

Вот так точно не следует делать. Атрибут hidden нужно ставить/удалять с помощью JavaScript.


someDOMElement.hidden = false /* true */

Только Facebook скорее всего использует Relay, а не Apollo.

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

Благодаря HTML mirror cursor даже F2 нажимать не надо — просто меняешь название, а оно редактируется как в открывающем теге, так и в закрывающем.

достаточно воспользоваться расширением Auto Rename Tag

Достаточно воспользоваться встроенным функционалом HTML mirror cursor или HTML Rename Tags, или воспользоваться командой опять же встроенного плагина EmmetEmmet: update tag.

Попробовал еще с модулем esm и конфигом `ecosystem.config.js` для PM2:


module.exports = {
  apps: [
    {
      name: 'PM2 Demo App',
      script: './app.js',
      instances: 4,
      exec_mode: 'cluster',
      node_args: '-r esm'
    }
  ]
}

Логи без ошибок.

Попробовал так (npm run cluster):


{
  "type": "module",
  "scripts": {
    "start": "node --experimental-modules app.js",
    "cluster": "pm2 -i 4 start npm -- run start"
  },
}

Вроде запустилось:
image

когда сайт рендерится скринридером или тактильным дисплеем.

Скринридер ничего не рендерит, а только читает.

Jake Acrhibald показывает пример, почему нужно 2-а requestAnimationFrame.

и не может быть отменен

Для этих целей существует Abort Controller, который, к слову, предназначен для отмены любых асинхронных операций. Есть полифилл.

Работу с element.style.height === '0px' я б заменил на работу с каким-нибудь классом, например,


.is-collapsed {
  height: 0;
}

А layout-триггеры можно заменить на requestAnimationFrame (но с небольшим кроссбраузерным хаком):


function onSchedule(fn) {
  /* да, здесь два requestAnimationFrame */     
  requestAnimationFrame(function() {
    requestAnimationFrame(function() {
      fn();
    });
  });
}

Полный пример — https://jsfiddle.net/95tnmdyr/

По поводу npm-пакета. Почему стандартный модуль zlib указан в зависимостях? Также в zlib есть поддержка brotli, начиная, если не путаю, с node 11. Так что утилиту можно было бы разработать полностью без зависимостей.

Можете уточнить, в чем проблема при таких условиях?

Давайте еще воспользуемся npm-хуками и добавим postbuild скрипт, который будет копировать README.md в папку со сборкой. Так мы никогда не забудем обновить описание пакета на NPM.

Почему бы не добавить README.md и папку со сборкой в секцию files в package.json?


И еще вопрос: кто или что в итоге вызывает npm-скрипт release? По идее, он должен вызываться при merge в master-ветку?

Зачем здесь вообще использовать препроцессор? Просто пишем:


[data-theme-style='normal'] {
  --color: hsl(var(--theme-color), 15%, 44%);
  --background-color: hsl(var(--theme-color), 30%, 10%);
}

Так избавляемся от лишней вложенности, повышения специфичности, трудного чтения препроцессорного костыльного (~'...') кода. А отвязка от html в селекторе дает возможность оформить разные элементы на странице разными темами, например, секции на лендинге.


<section data-theme-style="normal"><!-- content --></section>
<section data-theme-style="dark"><!-- content --></section>

А если несколько рядов?

В кругу тех, кто занимается версткой, «переполнение» вполне себе нормальный и часто используемый термин.

В примерах автора это не так очевидно, но данная техника позволяет добиться желаемого. Выставите значение переменной --container-width, например в 1200px, и посмотрите, как это работает — https://jsfiddle.net/z86wt2uh/

Information

Rating
Does not participate
Registered
Activity