Есть ли единый способ узнать, видим ли узел или нет?

Я хотел бы знать, виден ли узел и отображается ли он на экране. Насколько я знаю, есть как минимум 3 стандартных и простых способа сделать узлы HTML невидимыми:

  • Настройка opacity: 0;
  • Настройка display: none;
  • Настройка visibility: hidden.

Я мог бы проверить только эти три, но я боюсь, что люди могут проявить творческий подход, когда дело доходит до способов скрыть содержание:

  • Отправка элемента за пределы экрана с использованием отрицательных полей;
  • Использование ширины или высоты 0 и скрытие переполнения;
  • я доверяю многим другим.

Поэтому мне было интересно, существует ли стандартный способ определения, отображается ли узел на экране. Я уверен, что все основные браузеры сами определяют его для ускорения рисования, так что, возможно, он каким-то образом выставлен.

8 голосов | спросил zneak 18 J0000006Europe/Moscow 2010, 01:32:15

2 ответа


0

Вы можете попробовать использовать модификатор jQuery :visible.

http://api.jquery.com/visible-selector/

К сожалению, я вполне уверен, что не учитывает ни одного из "хитрых" случаев, о которых вы говорите.

ответил Thomas 18 J0000006Europe/Moscow 2010, 01:53:09
0

Если это ваша страница, то вы можете получить большую часть контроля, и это становится вопросом применения стандартов, которые вы внедряете. Если это страница forign (например, если вы пишете букмарклет), то число переменных чрезвычайно велико.

Видимость означает разные вещи для людей и браузеров. Браузер должен знать контекст и структуру страницы, а также занимать ли объект место, что верно даже в случаях opacity:0 и visibility:hidden, поэтому jQuery работает именно так.

Таким образом, вам нужно посмотреть на конкретный элемент, включая его поля, отступы, атрибуты переполнения, видимость, отображение, все настройки прозрачности, проверьте наличие color:rgba(*,*,*,0) тоже, наверное. Затем вам нужно просмотреть каждый родительский объект до самого конца документа.

ответил Phil 18 J0000006Europe/Moscow 2010, 04:31:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132