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
要素が除去されているか否かに応じて、2つの方法を示し2つのスクリーンショットです。
私はtext-transform
プロパティを使用したいと思いますが、これは既知のバグと私は私が行動を誘発しないことを確実にするために行うことができている場合、私は疑問に思って。明示的にリフローイベントを発生させることさえ可能であるかもしれません。
yopuがJSを使用して名前を書き出していない場合、同じことが起こりますか? –
あなたが与えたコードをローカルのwampserverに置いた新しいhtmlファイルにコピーしました。クロムブラウザ(17.0.963.56)で開いたので、うまくいきます。 –
@Darko Z:いいえ、私はしばらくそれに気付かなかったのです。 'firstName'と' lastName'スパンにコンテンツを配置すると、大文字のテキストが枠内の要素の中にレンダリングされます。 – Lucas