添加条件时,Jquery不执行动画
Jquery not executing animation when conditional is added
一直在考虑在我的个人网站上添加层叠动画。如果没有条件,它可以完美地工作,但是我希望脚本检查动画是否已经运行,这样当用户加载一个新页面时,动画就不需要播放了。
var topper = document.getElementByClassName("top-thing");
if (topper.style.display === "none") { }
要执行的代码为:
$(document).ready(function() {
if (topper.style.display === "none") {
$('.top-thing').slideDown("slow");
$('.middle-thing').delay(500).slideDown("slow");
$('.bottom-thing').delay(1000).slideDown("slow");
topper.style.display = "initial";
}
});
我想我一定是用不正确的方式引用了style元素,我的。top-thing的CSS如下:
.top-thing {
padding: 10%;
text-align: center;
display: none;
background-color: #5CADFF;
margin: 0;
position: relative;
}
所以我想检查这个属性是否为"none",当且仅当它实际上为none时执行动画代码。我想一个问题,源于这是:动画发生后,JS改变这个风格属性是什么?
JSFiddle with HTML &div CSS: https://jsfiddle.net/evanbananas/ua418bzo/
JavaScript中的条件应该是这样的,以便检查display属性是否为"。top-thing"等于"none" (topper是一个不正确的引用):
$(document).ready(function() {
if ($('.top-thing').css('display') == 'none') {
$('.top-thing').slideDown("slow");
$('.middle-thing').delay(500).slideDown("slow");
$('.bottom-thing').delay(1000).slideDown("slow");
topper.style.display = "initial"; //This line will have to change
}
});
在这种情况下,如果display属性不是"none",它将不会执行if语句中的逻辑。
*同样,你将这个转换为"initial"的引用也必须更新。您可能需要设置代码以使用会话变量来记住动画是否在各个页面中运行。实现这一点是一个全新的问题,应该这样问。
这是更新后的JSFiddle
问题是分配给topper
。要解决此问题,请替换
topper.style.display === "none"
$('.top-thing').css('display') === 'none'
相关文章:
- JavaScript动画从不执行
- Javascript:在css动画之后继续执行
- 动画在执行之前等待
- jQuery Transit动画未在for循环中正确执行
- 为什么创建后立即执行的样式指定没有设置动画
- 使用 class、ng-show 和 ng-class 执行 AngularJS 动画
- 如何正确执行Jquery动画浮动
- Chrome 不会在 jQuery 动画的回调中执行所有行
- 为什么 JavaScript 执行会影响 Firefox 中的 css 动画和动画 gif
- 动画结束时执行动画
- 在动画设置超时后执行函数
- 如何在加载而不是悬停时执行 CSS3 动画
- 如何使用拉斐尔库在 Javascript 中执行动画,使用鼠标单击或鼠标拖动
- 是否可以在 Angular 指令中使用 jQuery 来执行动画
- 对使用 javascript setInterval 来执行动画作业感到困惑
- 我如何同时执行动画和淡出?
- jQuery hashchange事件立即执行动画,没有速度
- 循环遍历表中的每个图像,对每个图像执行动画
- 添加条件时,Jquery不执行动画
- :在执行动画时,visible总是返回true