¿Es posible verificar si el CSS de un elemento display == block
o none
usar JavaScript?
Respuestas:
Como dice sdleihssirhc a continuación, si el elemento display
se hereda o se especifica mediante una regla CSS, deberá obtener su estilo calculado :
return window.getComputedStyle(element, null).display;
Los elementos tienen una style
propiedad que le dirá lo que desea, si el estilo se declaró en línea o con JavaScript:
console.log(document.getElementById('someIDThatExists').style.display);
le dará un valor de cadena.
currentStyle
? nunca escuché de él, también verifiqué document.body.currentStyle
y no obtuve nada (no me sorprendió)
Si el estilo se declaró en línea o con JavaScript, puede acceder al style
objeto:
return element.style.display === 'block';
De lo contrario, tendrá que obtener el estilo calculado y hay inconsistencias en el navegador. IE usa un currentStyle
objeto simple , pero todos los demás usan un método:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
Se null
requiere en Firefox versión 3 y anteriores.
===
y !==
operadores".
===
lugar de ==
aquí, pero tampoco hay ventaja. Se garantiza que ambos operandos son cadenas, por lo que ambos operadores realizan exactamente los mismos pasos.
Para jQuery, ¿te refieres a esto?
$('#object').css('display');
Puedes comprobarlo así:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
Esta respuesta no es exactamente lo que desea, pero puede ser útil en algunos casos. Si sabe que el elemento tiene algunas dimensiones cuando se muestra, también puede usar esto:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
EDITAR: Por qué esto podría ser mejor que la verificación directa de CSS display
propiedad ? Porque no es necesario verificar todos los elementos principales. Si algún elemento padre tiene display: none
, sus hijos también están ocultos, pero todavía lo está element.style.display !== 'none'
.
Para saber si es visible con JavaScript simple, verifique si la propiedad de visualización es 'ninguna' (no verifique 'bloque', también podría estar en blanco o 'en línea' y aún estar visible):
var isVisible = (elt.style.display != "none");
Si está usando jQuery, puede usar esto en su lugar:
var isVisible = $elt.is(":visible");
Con javascript puro puede verificar la style.display
propiedad. Con jQuery puedes usar$('#id').css('display')
Puede verificarlo con, por ejemplo, jQuery:
$("#elementID").css('display');
Devolverá una cadena con información sobre la propiedad de visualización de este elemento.