私のプロジェクトの1つで、Google Chrome(バージョン18.0.1025.168 m)で奇妙な動作が発生しました。Google Chromeのハッシュアンカーへのリンクをクリックすると、水平スクロールが正しく行われない
Firefoxでは、Operaはすべてうまく動作しますが、Chromeではハッシュアンカーへのリンクをクリックすると正しくない水平スクロールが発生します。 垂直スクロールは正常ですが、水平は非常に悪いです。
時々、要求されたdivがうまく表示されますが、ほとんどの場合、divブロックは視野範囲の外側または右側にあります。
これは次のコードで再現できます。 トップレフ固定メニューをクリックすると、上、左、右、右、右などが表示されます。
これはChrome-Bugかわかりませんが、何か見落としていますか?どういう意味ですか? 既知の回避策はありますか?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Google-Chrome don't follows anchors properly - incorrect horizontal scrolling</title>
<style type="text/css">
body
{
min-width: 700px;
overflow: auto;
}
div
{
position: absolute;
width: 400px;
height: 300px;
z-index: 1;
padding-left:160px;
}
#top
{
border: 1px solid black;
top:0px;
left: 400px;
background: gray;
}
#left
{
border: 1px solid blue;
left:0px;
top: 400px;
background:#00d;
}
#right
{
border: 1px solid orange;
left:800px;
top: 800px;
background: yellow;
}
#moreright
{
border: 1px solid red;
left:1600px;
top: 1500px;
background:#d00;
}
div#fixedmenu
{
position: fixed;
top:0;
left: 0;
width: 150px;
height: 150px;
background: #ddd;
border: 1px solid gray;
z-index: 2;
margin: 0;
padding:0;
}
</style>
</head>
<body>
<div id="top" >top</div>
<div id="left">left</div>
<div id="right">right</div>
<div id="moreright">moreright</div>
<div id="fixedmenu">
<ul>
<li><a href="#top">top</a></li>
<li><a href="#left">left</a></li>
<li><a href="#right">right</a></li>
<li><a href="#moreright">moreright</a></li>
</ul>
</div>
</body>
</html>
だけスタックオーバーフローのための 'hash'タグは、一般にハッシュ関数http://en.wikipedia.org/wiki/Hash_functionのコンピュータサイエンスの概念を指します。あなたは 'anchor'タグを持っています:-) –
私はクロムでJSFiddleでこれを試してみましたが、水平スクロールがどの方向から来るのかが関係しているようです。 #leftアンカーと#morerightアンカーはスクロールバーをウィンドウの両側に固定しているので、#rightアンカーに移動するとスクロールバーが動かず、これはfirefox 3.6の動作とは大きく異なります。 FFは、スクロールバーを常に配置して、div全体が表示されるようにします。見て、それがあなたが見ているものなら、私に教えてください:http://jsfiddle.net/jBf3y/ –
はい、これは私が話していることです。出力水平位置は水平着地位置に影響します。同じ結果を得るには、同じ一連のクリックをテストすることが重要です。document.documentElement.clientWidth/window.innerWidthも重要な要素です。 –