我運行了一個奇怪的佈局錯誤,當inline-block
嵌套在block
元素中時,該錯誤似乎是由text-transform
CSS屬性觸發的。我也在Safari(5.1.2)上看到了這個問題,但這個最小的測試用例僅在Chrome(17.0.963.56)上觸發。text-transform:大寫會導致Chrome上的佈局錯誤
特別有趣的是,打開開發人員工具並將其保留在元素選項卡上會觸發正確的佈局。我最好的猜測是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
財產,但我想知道如果這是一個已知的bug和我能做些什麼,以確保我不觸發行爲。即使能夠明確觸發迴流事件也可能足夠好。
做同樣的事情發生如果yopu不使用JS寫出名稱? – 2012-02-23 22:21:02
我已將您給出的代碼複製到一個新的HTML文件中,我將其放在本地wampserver上,並用鉻瀏覽器(17.0.963.56)將其打開,並且它工作正常。 – 2012-02-23 22:28:40
@Darko Z:不,這就是爲什麼我沒有注意到它一段時間。將內容放在'firstName'和'lastName'中跨越邊框元素內的大寫文字。 – Lucas 2012-02-23 22:29:46