Arada sırada Chrome mükemmel şekilde geçerli HTML / CSS’yi yanlış veya hiç göstermeyecektir. DOM denetçisini incelemek, yollarının hatasını fark etmesini ve doğru bir şekilde yeniden çizmesini sağlamak için genellikle yeterlidir, bu nedenle işaretlemenin iyi olması muhtemeldir. Bu, belirli durumlarda yeniden çizmeye zorlamak için kod koyduğum üzerinde çalıştığım bir projede sık sık (ve tahmin edilebilir şekilde) oluyor.
Bu, çoğu tarayıcı / işletim sistemi kombinasyonunda çalışır:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
el.offsetHeight
el.style.cssText += ';-webkit-transform:none'
Olduğu gibi, kullanılmayan bazı CSS mülklerini değiştirin, sonra yeniden çizmeyi zorlayan bazı bilgileri isteyin, ardından özelliği gevşetin. Ne yazık ki, Mac için Chrome'un arkasındaki parlak ekip, yeniden çizmeden bu ofsetHeight'ı elde etmenin bir yolunu bulmuş gibi görünüyor. Böylece başka türlü yararlı bir kesmek öldürmek.
Şimdiye kadar, Chrome / Mac üzerinde aynı etkiyi elde etmek için bulduğum en iyi şey bu çirkinlik parçası:
$(el).css("border", "solid 1px transparent");
setTimeout(function()
{
$(el).css("border", "solid 0px transparent");
}, 1000);
İçinde olduğu gibi, aslında elemanı biraz atlamaya zorlayın, sonra bir saniye soğutun ve geri atlayın. Daha da kötüsü, bu zaman aşımını 500 ms'nin altına düşürürseniz (daha az farkedilebilecek bir yere), genellikle istenen etkiye sahip olmaz, çünkü tarayıcı orijinal durumuna geri dönmeden önce yeniden çizilmeye başlamaz.
Chrome / Mac üzerinde çalışan bu yeniden çizim / yenileme saldırısının (tercihen yukarıdaki ilk örneğe dayanarak) daha iyi bir sürümünü sunmayı düşünen var mı?