2010-06-17 18 views
8

Me gustaría saber si un nodo está visible y renderizado en la pantalla. Por lo que yo sé, hay por lo menos 3 formas estándar y fáciles de hacer HTML nodos no visible:¿Existe una forma unificada de saber si un nodo es visible o no?

  • Configuración opacity: 0;
  • Configuración display: none;
  • Configuración visibility: hidden.

pude comprobar por sólo estos tres, pero me temo que la gente puede ser creativo cuando se trata de formas de contenidos escondidos:

  • de enviar el elemento fuera de la pantalla utilizando los márgenes negativos;
  • Usar un ancho o alto de 0 y ocultar el desbordamiento;
  • muchas más Confío en que las personas se hayan desarrollado.

Me preguntaba si existe una forma estándar de determinar si un nodo se representa en la pantalla. Estoy bastante seguro de que todos los navegadores principales lo determinan por sí mismos para acelerar el dibujo, por lo que tal vez esté de alguna manera expuesto.

+3

Solo para agregar a sus problemas: Uno de los elementos principales del elemento podría tener cualquiera de esos elementos, lo que haría que el elemento también sea invisible. : D –

+1

¿Qué le parece verificar el tamaño de la ventana del navegador, luego buscar la posición del elemento y luego verificar todas las opciones que mencionó, más el índice Z? – jnkrois

+0

@jnkrois: No puedo verificar los muchos más que confío que las personas hayan desarrollado, porque no los conozco. – zneak

Respuesta

1

Puede intentar usar el modificador :visible de jQuery.

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

Por desgracia, estoy bastante seguro de que no toma en cuenta cualquiera de los casos "difíciles" que se está hablando.

+3

Como dicen los documentos jQuery: * Elementos con visibilidad: ocultos u opacidad: 0 se consideran visibles * por lo tanto: visible no funcionará –

+0

+1 para el conector jquery, aunque no era exactamente lo que estaban buscando. –

0

Si esta es su página, entonces puede tener la mayor parte del control y se trata de aplicar los estándares que implementa. Si esta es una página forign (por ejemplo, si está escribiendo un bookmarklet), entonces el número de variables es extremadamente grande.

Visibilidad significa cosas diferentes para personas y navegadores. El navegador necesita conocer el contexto y el diseño de la página y si un objeto ocupa espacio, lo que es cierto incluso en los casos de opacity:0 y visibility:hidden, por lo que jQuery funciona de esa manera.

Por lo tanto, debe tener en cuenta el elemento en particular, incluidos sus márgenes, relleno, atributos de desbordamiento, visibilidad, visualización, todas las configuraciones de opacidad, también para color:rgba(*,*,*,0). Luego debe mirar cada objeto principal desde el documento hasta el final.

+0

No es mi página. – zneak

Cuestiones relacionadas