Я столкнулся со странной ошибкой компоновки, которая, по-видимому, вызывается свойством text-transform
CSS, когда inline-block
вложен в элемент block
. Я также видел проблему в Safari (5.1.2), но этот минимальный тестовый случай срабатывает только в Chrome (17.0.963.56).
Особенно интересным является то, что открытие инструментов разработчика и сохранение их на вкладке «Элементы» приводит к правильной компоновке. Мое лучшее предположение состоит в том, что сочетание правил CSS и структуры DOM приводит к тому, что движок webkit пропускает повторное выполнение страницы.
<!DOCTYPE html>
<html>
<head>
<title>Menu Widget Test</title>
<style type="text/css">
.container
{
border: 1px solid black;
display: inline-block;
}
.title
{
text-transform: uppercase; /* <-- Remove this and it works */
}
</style>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
document.getElementById("firstName").innerHTML = "John";
document.getElementById("lastName").innerHTML = "Smith";
}, false);
</script>
</head>
<body>
<div> <!-- Remove this DIV element, and it works -->
<span class="container">
<span class="title">
<span id="firstName"></span>
<span id="lastName"></span>
</span>
</span>
</div>
</body>
</html>
Вот два снимка экрана, на которых показаны два способа визуализации в Chrome в зависимости от того, удалено правило text-transform
или элемент div
.
Я хотел бы использовать свойство text-transform
, но мне интересно, является ли это известной ошибкой и что я могу сделать, чтобы не вызывать поведение. Даже возможность явно инициировать событие reflow может быть достаточно хорошей.