Sekali-sekali, Chrome akan membuat HTML / CSS yang valid dengan benar salah atau tidak sama sekali. Menggali melalui inspektur DOM sering cukup untuk membuatnya menyadari kesalahan cara dan menggambar ulang dengan benar, sehingga terbukti bahwa markupnya baik. Ini sering terjadi (dan dapat diprediksi) cukup dalam proyek yang sedang saya kerjakan sehingga saya telah menempatkan kode untuk memaksa redraw dalam keadaan tertentu.
Ini berfungsi di sebagian besar kombinasi browser / os:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
el.offsetHeight
el.style.cssText += ';-webkit-transform:none'
Seperti pada, atur beberapa properti CSS yang tidak digunakan, lalu minta beberapa informasi yang memaksa redraw, lalu unduh properti tersebut. Sayangnya, tim yang cemerlang di belakang Chrome untuk Mac tampaknya telah menemukan cara untuk mendapatkan offsetHeight itu tanpa menggambar ulang. Dengan demikian membunuh hack yang bermanfaat.
Sejauh ini, yang terbaik yang saya hasilkan untuk mendapatkan efek yang sama pada Chrome / Mac adalah keburukan ini:
$(el).css("border", "solid 1px transparent");
setTimeout(function()
{
$(el).css("border", "solid 0px transparent");
}, 1000);
Seperti dalam, sebenarnya memaksa elemen untuk melompat sedikit, lalu dinginkan sebentar dan melompat kembali. Yang lebih parah, jika Anda menjatuhkan batas waktu di bawah 500 ms (ke tempat yang kurang terlihat), sering kali tidak akan memiliki efek yang diinginkan, karena browser tidak akan berkeliling untuk menggambar ulang sebelum kembali ke keadaan semula.
Adakah yang mau menawarkan versi yang lebih baik dari hack redraw / refresh ini (lebih disukai berdasarkan contoh pertama di atas) yang bekerja di Chrome / Mac?