我正在尝试创建的网页上有一个双向滑动动画。然而,动画只是部分工作。更准确地说,动画向上滑动,但只是中途向下滑动。这是我的 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 函数的第四行,我将条件设置为 <= 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 条件。但是在调整它之后,我现在不太确定。