サイトを右から左への読者(アラビア語やヘブライ語など)に適合させているときに、右揃えのbodyタグに背景画像を割り当てる場合、Webkitブラウザーで予期しない動作が発生します。
まず、この動作を確認できるサンプルページを含めましょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html dir="rtl" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ar" lang="ar">
<head>
<title>Body background image right aligned</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<style type="text/css">
body {
margin: 0;
background-image: url(http://static.convertworld.com/images/cols_yb-rtl.png);
background-position: top right;
background-repeat: repeat-y;
}
#header {
height: 100px;
background-color: blue;
}
#main {
position: absolute;
top: 100px;
right: 150px;
width: 610px;
background-color: red;
}
#column {
position: absolute;
top: 100px;
right: 0;
width: 150px;
}
</style>
</head>
<body>
<div id="header">Header</div>
<div id="main">Main</div>
<div id="column">Column</div>
</body>
</html>
次に、水平スクロールバーが表示されるまでウィンドウを小さくします。背景画像はドキュメントの右側に配置されなくなり、左からxピクセルの位置に配置されます。ここで、xはビューポートの幅です。
次のブラウザは、この予期しない動作を示しています。
- Chrome(Win7&WinXP)
- Safari(Win7&WinXP)
- Webkit MiniBrowser、ナイトリービルド2012-09-06(Win7)
IE、FireFox、Operaは期待される結果を示していますが、ビューポートのサイズに関係なく、背景画像は常に右揃えになっています。
私はWebkitの大ファンですが、これ以外の説明はありません。これはバグです:(誰かがこの動作について別の説明を見つけたら素晴らしいと思います。基本的に:
- これはあなたにも起こりますか?
- これは私のマークアップが正しくないためですか?
- CSSにエラーはありますか?
- または...それはWebkitのバグですか:(
私は回避策を探しているのではなく、考えられる説明を探していると言うべきです。画像を絶対右:0およびz-インデックス:-1に配置する回避策がすでにあります。
ありがとう!