Thỉnh thoảng, Chrome sẽ hiển thị HTML / CSS hoàn toàn hợp lệ không chính xác hoặc hoàn toàn không. Đi sâu vào trình kiểm tra DOM thường đủ để khiến nó nhận ra lỗi theo cách của mình và vẽ lại chính xác, do đó, có thể chứng minh rằng việc đánh dấu là tốt. Điều này xảy ra thường xuyên (và có thể dự đoán) trong một dự án tôi đang thực hiện rằng tôi đã đặt mã tại chỗ để buộc vẽ lại trong một số trường hợp nhất định.
Điều này hoạt động trong hầu hết các kết hợp trình duyệt / os:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
el.offsetHeight
el.style.cssText += ';-webkit-transform:none'
Như trong, điều chỉnh một số thuộc tính CSS không được sử dụng, sau đó yêu cầu một số thông tin buộc vẽ lại, sau đó gỡ bỏ thuộc tính. Thật không may, đội ngũ sáng giá đằng sau Chrome cho Mac dường như đã tìm ra cách để có được sự bù đắp đó mà không cần vẽ lại. Do đó, giết một hack hữu ích khác.
Cho đến nay, điều tốt nhất tôi nghĩ ra để có được hiệu ứng tương tự trên Chrome / Mac là phần xấu xí này:
$(el).css("border", "solid 1px transparent");
setTimeout(function()
{
$(el).css("border", "solid 0px transparent");
}, 1000);
Như trong, thực sự buộc phần tử nhảy một chút, sau đó làm lạnh một giây và nhảy trở lại. Làm cho nó tệ hơn, nếu bạn giảm thời gian chờ đó xuống dưới 500ms (đến nơi nó sẽ ít được chú ý hơn), nó thường sẽ không có hiệu ứng mong muốn, vì trình duyệt sẽ không quay lại để vẽ lại trước khi nó trở lại trạng thái ban đầu.
Bất cứ ai quan tâm để cung cấp một phiên bản tốt hơn của bản vẽ lại / làm mới này (tốt nhất là dựa trên ví dụ đầu tiên ở trên) hoạt động trên Chrome / Mac?