$('#abc').addClass('slideout').removeClass('slidein').delay(200).css('display','none');
执行以上语句,slideout
效果显示了,但是 display:none
也执行了,但后又显示了。。。
.slidein .major {
-webkit-animation: fcl-in 200ms linear;
animation: fcl-in 200ms linear;
}
.slideout {
-webkit-animation: slideout-null 200ms;
animation: slideout-null 200ms;
}
.slideout .major {
-webkit-animation: fcl-out 200ms linear;
animation: fcl-out 200ms linear;
}
@keyframes fcl-in {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes fcl-out {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
@keyframes slideout-null {
0% {
opacity: 1;
}
100% {
opacity: 1;
}
}
在 jQuery 中,.delay()
方法仅适用于队列中的动画效果,而不是对 .css()
这样的非动画效果。当你链式调用 .delay(200).css('display','none');
时,.delay()
实际上并没有对 .css('display','none')
起作用,因为 .css()
不属于动画队列。
在你的例子中,.addClass('slideout')
触发了动画,但紧接着的 .delay(200)
并没有等待动画完成,而是立即执行了 .css('display','none')
。然而,由于 .css('display','none')
是在动画开始后立即设置的,它可能会立即隐藏元素,但这之后,动画可能仍在执行其动画帧(尽管元素已不可见),并且在动画完成后,如果有其他代码(例如动画完成后的回调函数)试图改变元素的显示状态,那么元素可能会再次显示。
你可以使用动画的完成回调函数来确保在动画结束后才设置 display: none
。但是,因为 .addClass()
不提供直接的回调,你可能需要使用 .animate()
(即使你不需要动画效果)或者监听动画结束事件。
以下是一个使用 .animate()
的示例,尽管我们实际上并不改变任何属性,只是利用 .animate()
的回调函数:
$('#abc')
.addClass('slideout')
.removeClass('slidein')
.animate({ opacity: 1 }, { // 使用一个不会改变任何东西的动画
duration: 200,
complete: function() {
// 动画完成后,设置 display: none
$(this).css('display', 'none');
}
});
或者,如果你使用的是 CSS 动画,并且想要监听动画结束事件,你可以这样做:
$('#abc')
.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() {
// 动画结束后,设置 display: none
$(this).css('display', 'none');
})
.addClass('slideout')
.removeClass('slidein');
在这个例子中,.one()
方法用于绑定一个一次性的事件处理器,它会在 CSS 动画结束时触发,并设置 display: none
。注意,这里使用了多个浏览器前缀来确保在所有浏览器中都能正常工作。
问题内容: 按下后如何隐藏“编辑”链接?当我按下编辑键时,是否还可以隐藏“ lorem ipsum”文本? 问题答案:
问题内容: 页面加载后5秒钟是否可以隐藏元素? 我想做完全相同的事情,但希望通过CSS过渡获得相同的结果。 有什么创意吗?还是我问的问题超出了CSS过渡/动画的限制? 问题答案: 但是您无法以可能立即想到的方式进行操作,因为您无法为原本依赖的属性(例如,或更改尺寸和设置为)设置动画或创建过渡,以正确隐藏元素和防止其占用可见空间。 因此,为有问题的元素创建一个动画,并在5秒后进行切换,同时还将高度和
问题内容: 在我的脚本中有三个div。我想在第一行悬停时显示div ,而在第二行悬停时显示。否则,我想默认显示div 。 但它永远不会显示带有的div 。 问题答案: 你需要 原始CSS中的问题是in css选择器启动了一个全新的选择器。它没有结合..所以意味着和。您将其设置为始终对所有元素都隐藏。
有很多这样的词:test1test2test3test4test5test6test7test8test9test10test11。。。 每个单词都与多个例句相关联。我希望它们在光标覆盖单词之前被隐藏。这是我的代码。 演示:https://jsfiddle.net/kyubyong/umxf19vo/ HTML: CSS 问题是,当原始行不止一行时,例句块覆盖了底线中的单词。我想把它们写下来,这样
乍一看,我试图做一些相当简单的事情,但我做不到。我有一个按钮和两个隐藏的div。按下按钮时,我希望第一个div显示,n秒后隐藏,然后第二个div显示。 HTML: 包含JS的完整代码如下所示:https://jsfiddle.net/439xbfe5/ 我已经在这里检查了答案:jQuery显示5秒钟,然后隐藏 这个代码的问题是#div2在#div1消失之前出现: 同样的问题: 我还尝试创建一个阻塞
问题内容: 对于我正在做的网站,我想加载一个div,然后隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 替换div2的第二个功能不起作用,但第一个功能起作用。 问题答案: 如何显示或隐藏元素: 为了显示或隐藏元素,请操纵元素的style属性。在大多数情况下,您可能只想更改元素的属性: 或者,如果您仍然希望元素占用空间(例如,如果您要隐藏表格单元格),