首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环通过有重叠的文本

循环通过有重叠的文本
EN

Stack Overflow用户
提问于 2021-02-01 16:56:48
回答 1查看 60关注 0票数 1

我试图循环单一的单词,将淡入/淡出,并能得到这项工作,虽然我想让它在第一个词完全消失之前有一个轻微的重叠。

代码语言:javascript
复制
var divs = $('div[id^="title-"]').hide(),
  i = 0;

(function cycle() {
  divs.eq(i).fadeIn(800).delay(600).fadeOut(700, cycle);
  i = ++i % divs.length;
})();
代码语言:javascript
复制
#title-1,
#title-2,
#title-3 {
  font-size: 10vw;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div id="title-1">Bam</div>
<div id="title-2">Bang</div>
<div id="title-3">Blah</div>

小提琴:https://jsfiddle.net/2020_RG/8fhqbcw5/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 17:37:06

要使文本效果在单词之间重叠,可以使用setTimeout()在显示下一个单词之前稍微显示下一个单词。您不能通过fadeOut()回调来实现这一点,因为只有在之前的动画完成后才会触发。

要使此工作正常进行,请定义一个超时,该超时将在元素上排队的所有操作完成之前稍微运行。在下面的示例中,我使用了300 as的重叠,但这可以根据您的需要进行修改。

还请注意,要想在DOM中占据相同的空间,需要将它们的CSS position设置为absolutefixedsticky

代码语言:javascript
复制
var divs = $('div[id^="title-"]'),
  i = 0;

(function cycle() {
  divs.eq(i).fadeIn(800).delay(600).fadeOut(700);
  i = ++i % divs.length;
  setTimeout(cycle, 1800);
})();
代码语言:javascript
复制
#title-1,
#title-2,
#title-3 {
  font-size: 10vw;
  position: absolute;
  display: none;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div id="title-1">Bam</div>
<div id="title-2">Bang</div>
<div id="title-3">Blah</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65996858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档