我使用标准的fadeOut / fadeIn来替换文本。但是这篇文章正在我的标题中的其他文本中间被替换。类似的东西:
$('#flashable').fadeOut('slow', function(){
$(this).delay(500);
$(this).html(someNewText);
$(this).fadeIn('slow);
});
当我这样做时,它很有效,除了DOM移动以删除先前的文本然后转回到someNewText
。在没有发生这种情况的情况下,有什么办法可以做到这一点吗?它对用户来说就像是这样
最初:
快速的棕色狐狸跳过懒狗。
淡出开始:
棕色的狐狸跳过懒狗。
淡入淡出:
聪明的棕色狐狸跳过懒狗。
注意:我替换的文字总是相同的字母数。因此,由于someNewText
插入的长度不同于$('#flashable').html()
之前的长度,因此不应出现DOM更改的闪烁。
答案 0 :(得分:5)
您可以将fadeOut
替换为fadeTo
,因为fadeOut
意味着在动画结束时设置display: none;
,这将导致从呈现的页面中删除元素框模型。但是,fadeTo
仅为opacity
设置动画并保留元素的位置和大小,以便以下元素保持其原始位置:
$('#flashable').fadeTo(600, 0, function () {
$(this).delay(600);
$(this).html('smart');
$(this).fadeTo(600, 1);
});
上的示例
答案 1 :(得分:1)
$('#flashable').fadeTo('slow', 0, function(){
$(this).delay(500);
$(this).html("smart");
$(this).fadeTo('slow', 1);
});
答案 2 :(得分:0)
我刚刚发现了这个:jQuery text fade/transition from one text to another?
使用animate / opacity。对于其他搜索者,我上面描述的被称为“跳跃”影响。
答案 3 :(得分:0)
您无法使用fadeOut()
和fadeIn()
,因为它们会在动画完成时隐藏文本块,从而导致它从页面布局中移除并移动。
相反,您可以使用fadeTo()
保留文本块,只是更改它的不透明度,但是您还需要构建HTML,以便两个文本块在另一个上面
这是一个有效的演示:http://jsfiddle.net/jfriend00/ahbyh/