Javascript で非常に珍しいバグを見つけたと思いますが、よくわかりません。
したがって、3 つの子 div が親 div 内に絶対配置されています (つまり、相対位置です)。
3 つの子 div は幅 1200 ピクセルで、親内に並んでいます。
したがって、最初の div は left:0px、2 番目は left:1200px、3 番目は left:2400px です。
今の私の目標は、クリックして div をシフトすることです。(親 div は 1200 ピクセルのビューポートとして機能しています)
$("#blogNav").click(function()
{
$("#blog").css( "left", "0px");
$("#software").css( "left", "1200px");
$("#about").css( "left", "2400px");
});
$("#softwareNav").click(function()
{
$("#blog").css( "left", "-1200px");
$("#software").css( "left", "0px");
$("#about").css( "left", "1200px");
});
$("#aboutNav").click(function()
{
$("#blog").css( "left", "-2400px");
$("#software").css( "left", "-1200px");
$("#about").css( "left", "0px");
});
これは完璧に機能します。
では、本題です。
hashchange イベントでまったく同じことを行うと、次のようになります。
window.onhashchange = function()
{
if(window.location.hash=="#blog")
{
$("#blog").css( "left", "0px");
$("#software").css( "left", "1200px");
$("#about").css( "left", "2400px");
}
if(window.location.hash=="#software")
{
$("#blog").css( "left", "-1200px");
$("#software").css( "left", "0px");
$("#about").css( "left", "1200px");
}
if(window.location.hash=="#about")
{
$("#blog").css( "left", "-2400px");
$("#software").css( "left", "-1200px");
$("#about").css( "left", "0px");
}
};
ポジショニングはすべて台無しです。
親 div の 0px の位置が移動され、0px が親 div の左端ではなくなります。そのいくつかの負のマージンにあります。
変更があるのは hashevent だけです。
これを十分に説明できていることを願っています。
近いうちにいくつかの例を自分のサイトにアップロードしようと思います。
まったく同じロジックがクリック イベントでは機能するのに、hashchange イベントでは機能しないのは非常に奇妙です。