簡體   English   中英

使用 JS 動畫文本內容

[英]Animate text content with JS

以下代碼使div 的文本內容在向下滑動時消失。 我怎樣才能在它還在滑動的時候從上面替換它的內容? 我的代碼在沒有替換新內容的情況下這樣做,我只是不知道為什么? 我的目標和想法不僅僅是替換文本內容,而是在 animation 過程中這樣做。

var changeText = function(id, newText){
    item = document.querySelector(id);

    item.animate([
        // keyframes
        { transform: 'translateY(0px)', opacity: '1' },
        { transform: 'translateY(1px)', opacity: '0.9' },
        { transform: 'translateY(4px)',  opacity: '0.7' },
        { transform: 'translateY(9px)', opacity: '0.5'},   
        { transform: 'translateY(14px)', opacity: '0.3' },
        { transform: 'translateY(20px)', content: newText}
        
      ], { 
        // timing options
        duration: 500,
        
      });
}

您可以在第一個 animation 完成后立即開始另一個 animation。 但在開始第二個 animation 之前,您可以更改文本。

 var changeText = function(id, newText){ item = document.querySelector(id); // item.animate(...) returns an Animation (refer to https://developer.mozilla.org/en-US/docs/Web/API/Element/animate) let animation = item.animate([ // keyframes { transform: 'translateY(0px)', opacity: '1' }, { transform: 'translateY(1px)', opacity: '0.9' }, { transform: 'translateY(4px)', opacity: '0.7' }, { transform: 'translateY(9px)', opacity: '0.5'}, { transform: 'translateY(14px)', opacity: '0.3' } ], { // timing options duration: 500, }); /* The Animation has an eventHandler refer to here: https://developer.mozilla.org/en-US/docs/Web/API/Animation and here: https://developer.mozilla.org/en-US/docs/Web/API/Animation/onfinish */ animation.onfinish = function() { // change text item.innerText = newText; // and start the second animation item.animate([ // keyframes { transform: 'translateY(14px)', opacity: '0.3' }, { transform: 'translateY(9px)', opacity: '0.5' }, { transform: 'translateY(4px)', opacity: '0.7' }, { transform: 'translateY(1px)', opacity: '0.9'}, { transform: 'translateY(0px)', opacity: '1' } ], { // timing options duration: 500, }); }; }
 <button onClick="changeText('#txt', 'newTxt')"> Click me! </button> <div id="txt"> Initial Text </div>

請忽略“類型”、“格式編號”。 它們與我的問題無關。

var changeText = function(id, text, type){
    item = document.querySelector(id);

    item.animate([
        // keyframes
        { transform: 'translateY(0px)', opacity: '1' },
        { transform: 'translateY(1px)', opacity: '0.9' },
        { transform: 'translateY(4px)',  opacity: '0.7' },
        { transform: 'translateY(9px)', opacity: '0.5'},   
        { transform: 'translateY(14px)', opacity: '0.3' },
        { transform: 'translateY(20px)', opacity: '0.3' }
        
      ], { 
        // timing options
        duration: 400,
        
      });

      window.setTimeout(()=>{
        item.style.display = "none";
        document.querySelector(id).textContent = formatNumber(text, type);
        item.style.display = "block";
        item.animate([
            // keyframes
            { transform: 'translateY(-20px)', opacity: '0' },
            { transform: 'translateY(-14px)', opacity: '0.3' },
            { transform: 'translateY(-9px)',  opacity: '0.5' },
            { transform: 'translateY(-4px)', opacity: '0.7'},   
            { transform: 'translateY(1-1px)', opacity: '0.9' },
            { transform: 'translateY(0px)', opacity: '1' }
            
          ], { 
            // timing options
            duration: 400,
            
          });
    }, 400);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM