作成しようとしている Web ページには、双方向のスライド アニメーションがあります。ただし、アニメーションは部分的にしか機能していません。より正確に言うと、アニメーションは上にスライドしますが、途中までしかスライドしません。これが私のJavaScriptです:
function showLayer() {
var hiddenLayer = document.getElementById("mainmenu");
var layerPosition = parseInt(hiddenLayer.style.top);
if (layerPosition > 315) {
hiddenLayer.style.top = (layerPosition - 5) + "px";
setTimeout("showLayer()", 20);
}
}
function hideLayer() {
var hiddenLayer = document.getElementById("mainmenu");
var layerPosition = parseInt(hiddenLayer.style.top);
if (layerPosition <= 315) {
hiddenLayer.style.top = (layerPosition + 5) + "px";
setTimeout("hideLayer()", 20);
}
}
hideLayer 関数の 4 行目で、条件を <= 315 に設定していることに注意してください。これは、条件を 315 に設定すると、トリガー要素をクリックした後、要素がいずれかの方向に数ピクセルしか移動しないためです。アニメーション専用の HTML 要素は次のとおりです。
<div id="mainbutton" onclick="showLayer('mainmenu'); hideLayer('mainmenu')"></div>
<div id="mainmenu" style="position: absolute; top: 690px; left: 9px;"
onclick="showLayer('mainmenu')"> </div>
そして、これらのスタイルは次のとおりです。
div#mainmenu { width: 600px; height: 350px; border-style: solid; background-color:
rgb(0, 0, 0) ; border-width: 3px; border-top-right-radius: 7px; border-top-left-
radius: 7px; }
div#mainbutton { position: absolute; top: 674px; left: 12px; width: 28px; height:
28px; border-style: solid; border-color: rgb(255, 255, 255); border-width: 1px; border-
radius: 4px; }
そしてフィドル:http://jsfiddle.net/JAtLA/
他の方法ではアニメーションが機能しないため、一部のスタイルを HTML とインラインで配置する必要がありました。最初は、問題は hideLayer 関数の if 条件だけにあると思っていました。しかし、それを微調整した後、私は今ではよくわかりません。