繁体   English   中英

我希望我的 javascript 中的文本更改动画能够平滑过渡

[英]I want my text change animation in javascript to have smooth transition

所以我有一个 h1(“你好,我是 xxxxxxxxx”)并用“问候”ID 将“你好”包裹在跨度中,我每 3 秒将 js 中的文本更改为另一种语言的“你好”。 它工作正常,但我希望它顺利改变但不会突然弹出。

// change text every 3 second
    var text = ["Hola", "Hallo", "Merhaba"];
    var counter = 0;
    var elem = document.getElementById("greeting");
    setInterval(change, 3000);
    function change() {
     elem.innerHTML = text[counter];
        counter++;
        if(counter >= text.length) { counter = 0; }
    }

对于 Jquery,您可能需要先使用fadeOut(),然后使用fadeIn() 函数。 你的代码会是这样的:

 var text = ["Hola", "Hallo", "Merhaba"]; var counter = 0; var elem = $("#greeting"); setInterval(change, 3000); function change() { elem.fadeOut(function(){ elem.html(text[counter]); counter++; if(counter >= text.length) { counter = 0; } elem.fadeIn(); }); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id='greeting'>Hello<div>

你可以通过添加一些 css 并使用 transition 属性来做到这一点。

 var greet = new Array("Hola", "Hallo", "Merhaba"); var counter= 0; document.getElementById('greeting').innerHTML = greet[counter]; Changegreeting1(); function Changegreeting1(){ incrementIndex() document.getElementById('greeting1').innerHTML = greet[counter]; document.getElementById('greeting').style.opacity = 0; document.getElementById('greeting1').style.opacity = 1; setTimeout(Changegreeting, 2000); } function Changegreeting(){ incrementIndex(); document.getElementById('greeting').innerHTML = greet[counter]; document.getElementById('greeting').style.opacity = 1; document.getElementById('greeting1').style.opacity = 0; setTimeout(Changegreeting1, 2000); } function incrementIndex(){ if(counter < greet.length - 1 ){ counter++; }else{ counter = 0; } }
 #greeting{ transition: opacity 1s; } #greeting1{ transition: opacity 1s; position:absolute; top:0px; margin-top:0px }
 <p id = "greeting"></p> <p id = "greeting1"></p>

那是你要的吗

如果“变平稳”你的意思是一些平滑过渡,在淡出淡入,我建议在看jQuery的淡出淡入方法。

动画持续时间设置为 100 的change()函数可能如下所示:

function change() {
   // Fade out
   $("#greeting").fadeOut(100, function() {
      // Increment the counter
      counter++;
      if(counter >= text.length) { counter = 0; }
      // Update the text and fade in
      $("#greeting").text(text[counter]).fadeIn(100);
   })
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM