Який найшвидший спосіб перевірити, чи є у елемента смуги прокрутки?
Звичайно, перевірити, чи більший елемент, ніж його вікно перегляду, що легко зробити, перевіривши ці два значення:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
але це не означає, що на ньому також є смуги прокрутки (тому насправді люди можуть прокручуватися).
Питання
Як я можу перевірити смуги прокрутки лише в 1 перехресному браузері та у 2 JavaScript (як не у jQuery )?
Тільки Javascript, тому що мені потрібно якомога менше накладних витрат, тому що я хотів би написати дуже швидкий фільтр вибору jQuery
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Я думаю, мені доведеться перевірити overflow
параметри стилю, але як це зробити в крос-браузерному способі?
Додаткове редагування
Не тільки overflow
налаштування стилю. Перевірка наявності елемента в панелі прокрутки не така тривіальна, як здається. Перша формула, яку я написав вище, добре працює, коли елемент не має межі, але коли він є (особливо коли межа має значну ширину), offset
розмір може бути більшим за scroll
розмір, але елемент все ще може прокручуватися. Нам фактично потрібно відняти межі від offset
виміру, щоб отримати фактичний прокручуваний огляд елемента та порівняти його з scroll
виміром.
Для подальшого ознайомлення
:scrollable
Фільтр вибору jQuery включений у мій .scrollintoview()
плагін jQuery. Повний код можна знайти в моєму блозі, якщо комусь це потрібно. Навіть незважаючи на те, що він не надав фактичного рішення, код Soumya значно допоміг мені вирішити проблему. Це вказувало мені в правильному напрямку.
overflow:hidden
встановлений на ньому? Зайвого вмісту буде, але його все ще не можна прокручувати. Проблема далеко не така проста, як може здатися.