Как я могу узнать, всегда ли включена настройка прокрутки в Mac show? - PullRequest
0 голосов
/ 05 марта 2019

В Mac OS предусмотрена общая настройка, в которой можно всегда показывать полосы прокрутки. Когда я делаю это, у меня возникает проблема с дополнительной полосой прокрутки, я хотел бы смягчить, добавив некоторые поля. Но это может привести к разрыву, если этот параметр выключен, а полосы прокрутки скрыты.

На Chrome я могу сказать, включена ли полоса прокрутки с этим:

this.bodyWrapperRight[0].offsetHeight - this.tableRight[0].offsetHeight > 0

В этом случае я сравниваю ширину контейнера с переполнением: выделите ширину внутреннего элемента.

Но, похоже, это не работает на Firefox или Safari на Mac. Я ищу какой-то способ сказать, если полоса прокрутки установлена ​​всегда видимым?

1 Ответ

0 голосов
/ 05 марта 2019

Я нашел решение на основе этого http://jsfiddle.net/UU9kg/17/ кода для получения ширины полосы прокрутки:.

/**
 * Gets the OS scollbar width in pixels.
 * @returns {number} The width as a number in pixels.
 */
utils.getScrollbarWidth = function () {
  const outer = document.createElement('div');
  outer.style.visibility = 'hidden';
  outer.style.width = '100px';
  document.body.appendChild(outer);

  const widthNoScroll = outer.offsetWidth;
  outer.style.overflow = 'scroll';

  const inner = document.createElement('div');
  inner.style.width = '100%';
  outer.appendChild(inner);

  const widthWithScroll = inner.offsetWidth;
  outer.parentNode.removeChild(outer);

  return widthNoScroll - widthWithScroll;
};

Это работает на Mac, Safari, Chrome и Firefox.Если вы запустите страницу скрипта и установите опцию полосы прокрутки Mac, теперь она всегда будет возвращать 15, если полоса прокрутки всегда видна, или 0, если она автоматически скрывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...