Jquery .animate()方法似乎不能与css top属性一起工作
Jquery .animate() method doesnt seem to work with css top property
嘿,伙计们,我正试图创建一个菜单,滚动到某一点后从页面顶部滑下,并固定在浏览器的顶部。由于某种原因,jquery
动画功能似乎不完全工作,但如果我在动画功能后添加alert("hello")
,它工作得很好。下面是我的函数代码:
function header()
{
var main = document.getElementById("main");
var rect = main.getBoundingClientRect();
var menu = document.getElementById("menuappear");
var y = rect.top;
if (y <= 5)
{
$("#menuappear").animate({top:"0px"}, 500);
}
else
{
$("#menuappear").animate({top:"-93px"}, 500);
}
}
我的html:
<body onscroll="header()">
...
<div id="menuappear">
<a href="index.html"><img class="logo" src="images/logo.png" /></a>
<ul>
<li><a onclick="scrolltop()">Home</a></li>
<li><a href="index.html">What We Do</a></li>
<li><a href="#">Our Work</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Join Our Team</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
这是我的css
:
#menuappear{
z-index: 1000000;
position: fixed;
top: -93px;
width: 100%;
height: 90px;
background-color: #242424;
margin: 0;
padding: 0;
border-bottom: 3px solid #49CBCD;
}
如果有人能告诉我我做错了什么,那就太好了。编辑:它有时会起作用,但真的没有响应
"如果在同一元素上调用多个动画方法,则之后的动画被放置在元素的效果队列中。在第一个动画完成之前,这些动画不会开始。当.stop()调用时,队列中的下一个动画立即开始。"- .stop() | jQuery API Doc
通过<body onscroll="header()">
调用动画的方式多次调用animate()
实际上是建立队列。这会导致延迟效应或根本不起作用。或者,您可以将animate()
上的队列参数设置为false,而不是使用stop()
。如下:$("#menuappear").animate({top:"-93px"}, {duration: 500, queue: false});
相关文章:
- CSS-如何定位内容数据标题
- 窗口大小html css
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 动画.CSS重播
- 有没有一种方法可以防止img get请求使用css或js发生
- CSS表格:从列平移到整个表格宽度
- CKEditor-我在editor.css中的风格是't
- 单击更改图标并通过javascript添加一个css类
- 将CSS应用于printWindow.print();在Javascript中
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- IE7/8未添加css属性'top'动态地作为内联样式
- 如何将异常添加到“CSS Top, JavaScript Bottom”Wordpress Function
- CSS-calc()或JQuery calc()不适用于top
- (CSS/jQuery)如何用jQuery解决top和bottom属性之间的冲突
- CSS如何使用Auto设置margin-top
- Jquery .animate()方法似乎不能与css top属性一起工作
- 光线如何?项目在没有CSS位置或margin-top的情况下上下移动
- 如果css("top")大于等于-70(负值)
- 设置CSS'top'属性,具体取决于鼠标位置