единицы rem не влияют на DIV в Chrome - побочный эффект настройки минимального размера шрифта - PullRequest
0 голосов
/ 01 июня 2019

Я наткнулся на очень странный случай, когда rem единицы не влияли на DIV с (и, возможно, на все другие элементы блока), но все еще были эффективны против текста (и я подозреваю, что все другие встроенные элементы). Это происходило только на одном компьютере с Windows и только в Chrome 74. На всех других платформах (Linux, Mac OS X) и других браузерах (даже в устаревшем Safari и в Canary, который на данный момент работает в Chrome 76).

У меня не было возможности тщательно его протестировать, но я сам был свидетелем этого и не смог обнаружить источник проблемы. Я пробовал это и в режиме инкогнито, поэтому кеш или сторонние расширения не должны были на это влиять.

Кто-нибудь сталкивался с этим или есть какое-то решение? Я протестировал https://youtube.com/tv (который построен с rems) на том же компьютере, и он масштабировался правильно. Единственная разница между моим сайтом и YouTube - это то, что я установил fontSize для корневого элемента в пикселях, а не в процентах.

Есть идеи?

const updateRatio = () => {
  const ratio = Math.min(window.innerWidth / 640, window.innerHeight / 480);
  document.querySelector(":root").style.fontSize = `${ratio}px`;
};
window.addEventListener("resize", updateRatio);
updateRatio();
#app {
  border: 2px dashed red;
  width: 320rem;
  height: 240rem;
}
<div id="app"></div>

Codesandbox: https://codesandbox.io/s/competent-resonance-dn1bn. Чтобы увидеть эффект, измените размер панели с красной пунктирной рамкой.

1 Ответ

0 голосов
/ 02 июня 2019

Оказывается, в Chrome есть такая настройка - «Минимальный размер шрифта» (chrome: // settings / fonts? Search = минимальный). Поэтому, если вам удастся сделать ссылку fontSize меньше, чем указанная там, вся логика rem сломается.

Вот как это было установлено в проблемном Chrome.

enter image description here

...