Как определить высоту горизонтальной полосы прокрутки или ширину вертикальной полосы прокрутки в JavaScript?
javascript
scrollbar
glmxndr
источник
источник
Ответы:
Из блога Александра Гомеса я не пробовал. Дайте мне знать, если это работает для вас.
источник
Используя jQuery, вы можете сократить ответ Мэтью Вайнса на:
источник
Это единственный найденный мной скрипт, который работает в браузерах webkit ... :)
Свернутая версия:
И вы должны позвонить, когда документ будет готов ... так
Протестировано 2012-03-28 на Windows 7 в последних версиях FF, Chrome, IE & Safari и работает на 100%.
источник: http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
источник
width
будет === undefined при первом вызове функции. При последующих вызовах функции уже установлено, что проверка просто предотвращает необходимость повторного запуска вычислений без необходимости.width
width
, а скорее пересчитывать его каждый раз. Это работает, но это ужасно неэффективно. Пожалуйста, сделайте миру одолжение и используйте правильную версию в плагине Алмана.если вы ищете простую операцию, просто смешайте обычный dom js и jquery,
возвращает размер полосы прокрутки текущей страницы. (если он виден или еще вернет 0)
источник
источник
Для меня самый полезный способ был
с ванильным JavaScript.
источник
document.documentElement.clientWidth
.documentElement
более четко и четко выражает намерение получить<html>
элемент.Я нашел простое решение, которое работает для элементов внутри страницы, а не самой страницы:
$('#element')[0].offsetHeight - $('#element')[0].clientHeight
Это возвращает высоту полосы прокрутки оси X.
источник
Из блога Дэвида Уолша :
Дает мне 17 на моем сайте, 14 здесь, на Stackoverflow.
источник
Если у вас уже есть элемент с полосами прокрутки, используйте:
Если панель horzintscroll не присутствует, функция перезапустится 0
источник
Вы можете определить
window
полосу прокрутки,document
как показано ниже, используя jquery + javascript:источник
В
Antiscroll.js
коде это делается так:Код отсюда: https://github.com/LearnBoost/antiscroll/blob/master/antiscroll.js#L447.
источник
Протестировано в Chrome, FF, IE8, IE11.
источник
Это должно сработать, нет?
источник
Создайте пустую
div
и убедитесь, что она присутствует на всех страницах (т.е. поместив ее вheader
шаблон).Дайте ему этот стиль:
Затем просто проверьте размер
#scrollbar-helper
с помощью Javascript:Нет необходимости вычислять что - либо, так как это
div
всегда будет иметьwidth
иheight
изscrollbar
.Единственным недостатком является то, что
div
в ваших шаблонах будет пустой текст. Но, с другой стороны, ваши файлы Javascript будут чище, так как это займет всего 1 или 2 строки кода.источник
источник
Большая часть браузера использует 15px для ширины полосы прокрутки
источник
С помощью jquery (проверено только в Firefox):
Но мне больше нравится ответ @ Стива.
источник
Это отличный ответ: https://stackoverflow.com/a/986977/5914609
Однако в моем случае это не сработало. И я часами искал решение.
Наконец, я вернулся к приведенному выше коду и добавил! Важно для каждого стиля. И это сработало.
Я не могу добавить комментарии ниже исходного ответа. Итак, вот исправление:
источник
Это решение позволит вам найти ширину прокрутки браузера (ванильный JavaScript). Используя этот пример, вы можете получить scrollY width для любого элемента, включая те элементы, которые не должны иметь прокрутку в соответствии с вашей текущей концепцией дизайна:
источник
Вот более краткое и простое для чтения решение, основанное на разнице ширины смещения:
Смотрите JSFiddle .
источник
Уже закодированы в моей библиотеке, так что вот оно:
Я должен отметить, что jQuery
$(window).width()
также может быть использован вместоwindow.document.documentElement.clientWidth
.Это не работает, если вы открываете инструменты разработчика в Firefox справа, но преодолевает это, если окно разработчика открывается внизу!
window.screen
поддерживается quirksmode.org !Радоваться, веселиться!
источник
Кажется, работает, но, может быть, есть более простое решение, которое работает во всех браузерах?
источник