¿Hay alguna manera de detectar si la propiedad css de "visualización" de un elemento ha cambiado (a ninguno o bloque o bloque en línea ...)? si no, algún complemento? Gracias
fuente
¿Hay alguna manera de detectar si la propiedad css de "visualización" de un elemento ha cambiado (a ninguno o bloque o bloque en línea ...)? si no, algún complemento? Gracias
Nota
Los eventos de mutación han quedado obsoletos desde que se escribió esta publicación y es posible que no sean compatibles con todos los navegadores. En su lugar, utilice un observador de mutaciones .
Sí tu puedes. El módulo de eventos DOM L2 define eventos de mutación ; uno de ellos: DOMAttrModified es el que necesita. Por supuesto, estos no están ampliamente implementados, pero son compatibles al menos con los navegadores Gecko y Opera.
Intente algo similar a estas líneas:
document.documentElement.addEventListener('DOMAttrModified', function(e){
if (e.attrName === 'style') {
console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue);
}
}, false);
document.documentElement.style.display = 'block';
También puede intentar utilizar el evento "propertychange" de IE como reemplazo de DOMAttrModified
. Debería permitir detectarstyle
cambios de forma fiable.
class
atributo (o cualquier otro atributo si los selectores de atributos están presentes en el CSS) de un ancestro del elemento también podría cambiar el elemento, por lo que tendría que manejar todos losDOMAttrModified
eventos en el elemento raíz del documento para asegúrese de atrapar todo.Puede usar el complemento attrchange jQuery . La función principal del complemento es vincular una función de escucha en el cambio de atributo de los elementos HTML.
Muestra de código:
fuente
Puede usar la
css
función de jQuery para probar las propiedades de CSS, por ejemplo.if ($('node').css('display') == 'block')
.Colin tiene razón, que no hay ningún evento explícito que se active cuando se cambia una propiedad CSS específica. Pero es posible que pueda darle la vuelta y activar un evento que configure la pantalla y cualquier otra cosa.
También considere la posibilidad de agregar clases CSS para obtener el comportamiento que desea. A menudo, puede agregar una clase a un elemento contenedor y usar CSS para afectar todos los elementos. A menudo coloco una clase en el elemento del cuerpo para indicar que hay una respuesta AJAX pendiente. Entonces puedo usar selectores CSS para obtener la pantalla que quiero.
No estoy seguro de si esto es lo que estás buscando.
fuente
Para las propiedades a las que afectará la transición css, puede usar el evento de final de transición, por ejemplo, para z-index:
fuente
No puedes. CSS no admite "eventos". ¿Me atrevo a preguntar para qué lo necesitas? Mira esta publicación aquí en SO. No puedo pensar en una razón por la que querrías conectar un evento a un cambio de estilo. Supongo aquí que el cambio de estilo se activa en algún otro lugar mediante un fragmento de javascript. ¿Por qué no agregar lógica adicional allí?
fuente