如何使用jQuery每2-3秒更改一个单词?
例如:
我有这个:
<div>
<span>This is so</span>
<span>awesome</span>
</div>
...我希望 awesome 变成酷炫,精彩,令人难以置信的并且使用fadeOut / fadeIn效果继续循环播放?
有可能吗?
非常感谢
答案 0 :(得分:20)
(function(){
// List your words here:
var words = [
'awesome',
'incredible',
'cool',
'fantastic'
], i = 0;
setInterval(function(){
$('#changerificwordspanid').fadeOut(function(){
$(this).html(words[i=(i+1)%words.length]).fadeIn();
});
// 2 seconds
}, 2000);
})();
为您的范围指定ID,并将changerificwordspanid
更改为范围的ID。
答案 1 :(得分:2)
JQuery: jsfiddle
var words = [
'awesome',
'incredible',
'cool',
'fantastic'
],
i = 0;
setInterval(function() { // \/ \/ callback function
$('#wordChanger').fadeOut(400, function() {
// if i = last index ? i = 0 else i++
$(this).text(words[ (i === words.length - 1) ? i = 0 : i += 1] ).fadeIn(400);
});
}, 2000);
&#13;
#wordChanger {
color: #f35537;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span>This is so</span>
<span id="wordChanger">awesome</span>
</div>
&#13;
纯JavaScript: codePen
window.onload = function () {
'use strict';
var words = [
'awesome',
'incredible',
'cool',
'fantastic'
],
i = 0,
wordChanger = document.querySelector('#wordChanger');
setInterval(function () {
wordChanger.classList.add('fadeOut');
// timeout equal to transition duration
setTimeout(function () {
wordChanger.textContent = words[ (i === words.length - 1) ? i = 0 : i += 1];
wordChanger.classList.remove('fadeOut');
}, 400);
}, 2000);
};
&#13;
#wordChanger {
opacity: 1;
transition: opacity .4s ease;
color: #f35537;
}
#wordChanger.fadeOut {
opacity: 0;
transition: opacity .4s ease;
}
&#13;
<div>
<span>This is so</span>
<span id="wordChanger">awesome</span>
</div>
&#13;
纯CSS: codePen
:before
伪content
content
增加25%)
#wordChanger {
color: #f35537;
}
#wordChanger:before {
content: 'awesome';
animation: changeText 11.2s ease reverse forwards infinite
}
@keyframes changeText {
100% { content: 'awesome'; opacity: 0 }
95% { content: 'awesome'; opacity: 1 }
80% { content: 'awesome'; opacity: 1}
76% { content: 'awesome'; opacity: 0 }
75% { content: 'incredible'; opacity: 0 }
70% { content: 'incredible'; opacity: 1 }
55% { content: 'incredible'; opacity: 1 }
51% { content: 'incredible'; opacity: 0 }
50% { content: 'cool'; opacity: 0 }
45% { content: 'cool'; opacity: 1 }
30% { content: 'cool'; opacity: 1 }
26% { content: 'cool'; opacity: 0 }
25% { content: 'fantastic'; opacity: 0 }
20% { content: 'fantastic'; opacity: 1 }
5% { content: 'fantastic'; opacity: 1 }
0% { content: 'fantastic'; opacity: 0 }
}
&#13;
<div>
<span>This is so</span>
<span id="wordChanger"></span>
</div>
&#13;
答案 2 :(得分:1)
这应该有效。首先,将id添加到要旋转文本的范围。如,
<span id="rotate-word">awesome</span>
在你的JavaScript中:
$(function() {
var words = ['cool', 'fantastic', 'incredible', 'awesome'],
index = 0,
$el = $('#rotate-word')
setInterval(function() {
index++ < words.length - 1 || (index = 0);
$el.fadeOut(function() {
$el.text(words[index]).fadeIn();
});
}, 3000);
});
您可以在此处查看此操作:http://jsfiddle.net/DMeEk/
答案 3 :(得分:0)
将某个ID应用于范围,并使用.text()
或.html()
<div>
<span>This is so</span>
<span id="container">awesome</span>
</div>
var texts = new Array();
texts[0] = "cool";
texts[1] = "awesome";
var i = 0;
function changeText()
{
$("#container").fadeOut("fast", function(){
$(this).html(texts[i++]);
$(this).fadeIn();
});
if(i > texts.length)
i = 0;
}
setInterval('changeText()', 2000);
答案 4 :(得分:0)
您可以使用setInterval
和几行代码轻松完成此操作。
正在使用 demo
var keywords = ["awesome", "cool", "fantastic", "incredible"];
var count = 1;
setInterval(function(){
$("span.keyword").fadeOut(400, function(){
$(this).html(keywords[count]);
count++;
if(count == keywords.length)
count = 0;
$(this).fadeIn(400);
});
}, 2000);
答案 5 :(得分:0)
$(document).ready(function(){
setInterval(function(){
var current = jQuery(".animate-span .active");
var cIndex = jQuery(".animate-span span").index(current), cLength = jQuery(".animate-span span").length, nextSpan = null;
if(cIndex<(cLength-1)){
nextSpan = jQuery(".animate-span span").eq(cIndex+1)
}else{
nextSpan = jQuery(".animate-span span").eq(0);
}
nextSpan.animate({top:0,opacity:1},500).addClass("active");
current.animate({top:45,opacity:0},500,function(){
jQuery(this).css({top:-40});
}).removeClass("active");
},2000)
});