2016-11-24 12 views
0

我已經使用HTML/CSS/JS製作了文字自動收報器,但經過一段時間文字更改與動畫不同步,文字在可見時開始更改。我如何改進代碼,以便只在隱藏時纔會更改代碼?一面文字自動收錄器

var arr = ["text1", "text2", "text3", "text4"]; 
 

 
    (function headerMessage(counter) { 
 
    var text = arr[counter]; 
 
    $('.header-message > span').text(text).animate({ 
 
     'margin-left': '0px' 
 
    }, 500).delay("3000").animate({ 
 
     'margin-left': '-300px' 
 
    }, 500); 
 
    delete arr[counter]; 
 
    arr.push(text); 
 
    setTimeout(function() { 
 
     headerMessage(counter + 1); 
 
    }, 4000); 
 
    })(0);
.header-message { 
 
    border-left: 1px solid #e3e3e3; 
 
    padding-left: 10px; 
 
    line-height: 58px; 
 
    vertical-align: middle; 
 
    float: left; 
 
    margin-left: 10px; 
 
    overflow: hidden; 
 
} 
 
.header-message span { 
 
    font-family: Raleway; 
 
    font-size: 14px; 
 
    color: #979797; 
 
    font-weight: 500; 
 
    height: 30px; 
 
    line-height: 30px; 
 
    margin-left: -300px; 
 
    vertical-align: middle 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="header-message"> 
 
    <span style="margin-left: 0px;">We love to help businesses like yours.</span> 
 
</div>

的jsfiddle這裏https://jsfiddle.net/qhtbsh2L/

+0

我使用的stop()嘗試可能是有用https://jsfiddle.net/qhtbsh2L/1/ –

回答

0

你不應該使用單獨的setInterval。嘗試將更改文本操作排入您的動畫鏈。

var arr = ["text1", "text2", "text3", "text4"]; 
 

 
    (function headerMessage(counter) { 
 
    var text = arr[counter]; 
 
    $('.header-message > span').text(text).animate({ 
 
     'margin-left': '0px' 
 
    }, 500).delay("3000").animate({ 
 
     'margin-left': '-300px' 
 
    }, 500).queue(function(next) { 
 
     headerMessage(counter + 1); 
 
     next(); 
 
    }); 
 
    delete arr[counter]; 
 
    arr.push(text); 
 
    })(0);
.header-message { 
 
    border-left: 1px solid #e3e3e3; 
 
    padding-left: 10px; 
 
    line-height: 58px; 
 
    vertical-align: middle; 
 
    float: left; 
 
    margin-left: 10px; 
 
    overflow: hidden; 
 
} 
 
.header-message span { 
 
    font-family: Raleway; 
 
    font-size: 14px; 
 
    color: #979797; 
 
    font-weight: 500; 
 
    height: 30px; 
 
    line-height: 30px; 
 
    margin-left: -300px; 
 
    vertical-align: middle 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="header-message"> 
 
    <span style="margin-left: 0px;">We love to help businesses like yours.</span> 
 
</div>