De vez en cuando, Chrome renderizará HTML / CSS perfectamente válido de forma incorrecta o no lo hará. Excavar a través del inspector DOM a menudo es suficiente para que se dé cuenta del error de sus formas y vuelva a dibujar correctamente, por lo que es probable que el marcado sea bueno. Esto sucede con frecuencia (y previsiblemente) lo suficiente en un proyecto en el que estoy trabajando que puse el código para forzar un redibujo en ciertas circunstancias.
Esto funciona en la mayoría de las combinaciones de navegador / sistema operativo:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
el.offsetHeight
el.style.cssText += ';-webkit-transform:none'
Al igual que en, modifique alguna propiedad CSS no utilizada, luego solicite información que obligue a volver a dibujar, luego destrabe la propiedad. Desafortunadamente, el brillante equipo detrás de Chrome para Mac parece haber encontrado una manera de compensar la altura sin volver a dibujar. Por lo tanto, matar a un truco útil.
Hasta ahora, lo mejor que se me ocurrió para obtener el mismo efecto en Chrome / Mac es este pedazo de fealdad:
$(el).css("border", "solid 1px transparent");
setTimeout(function()
{
$(el).css("border", "solid 0px transparent");
}, 1000);
Como en, realmente fuerce al elemento a saltar un poco, luego enfríe un segundo y salte hacia atrás. Para empeorar las cosas, si deja ese tiempo de espera por debajo de 500 ms (hasta donde sería menos notable), a menudo no tendrá el efecto deseado, ya que el navegador no podrá volver a dibujar antes de volver a su estado original.
¿Alguien quiere ofrecer una mejor versión de este hack de redibujar / actualizar (preferiblemente basado en el primer ejemplo anterior) que funciona en Chrome / Mac?