Раз у раз Chrome буде виводити ідеально правильний HTML / CSS неправильно або зовсім не. Копатися через інспектора DOM досить часто, щоб він зрозумів помилку своїх шляхів і правильно перемальовував, тому, очевидно, випадок, що розмітка хороша. Це трапляється досить часто (і передбачувано) в проекті, над яким я працюю, і я поставив код, щоб змусити перемальовувати певні обставини.
Це працює в більшості комбінацій браузера / os:
el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
el.offsetHeight
el.style.cssText += ';-webkit-transform:none'
Як і в, перегляньте деякі невикористані властивості CSS, потім запитайте інформацію, яка змушує перемальовувати, а потім зніміть властивість. На жаль, схоже, що яскрава команда, що стоїть за Chrome для Mac, знайшла спосіб вирівняти висоту без перемальовки. Таким чином вбиваючи інакше корисний хак.
Поки що найкраще, що я придумав, щоб досягти такого ж ефекту на Chrome / Mac, це ця потворність:
$(el).css("border", "solid 1px transparent");
setTimeout(function()
{
$(el).css("border", "solid 0px transparent");
}, 1000);
Як і в, насправді змушуйте елемент трохи стрибнути, а потім охолодити секунду і відскочити назад. Що ще гірше, якщо цей час очікується нижче 500 мс (туди, де це буде менш помітно), він часто не матиме бажаного ефекту, оскільки браузер не перейде до перемальовування, перш ніж повернеться до початкового стану.
Комусь хочеться запропонувати кращу версію цього перелому / оновлення (бажано на основі першого прикладу вище), який працює в Chrome / Mac?