我发现了几个问题。在某些浏览器中,当您切换到较长的单词时会发生自动换行,而在所有浏览器中,都会出现垂直对齐问题。可以在这里以一种更孤立的方式看到问题:http: //jsfiddle.net/jfriend00/BSmwF/,您可以清楚地看到只有当较长的单词替换较短的单词导致临时换行时才会发生跳转。
我还大大简化了代码,不需要包装和展开。
如果您添加这个防止自动换行并修复对齐问题的 CSS,问题就会消失:
.flipper {
white-space: nowrap;
overflow: hidden;
vertical-align: bottom;
}
在这里工作演示:http: //jsfiddle.net/jfriend00/EgfYU/
而且,我更改为没有包装/解包的更简单的代码并使用fadeTo()
了,因此跨度只改变了它的不透明度,并且永远不会设置为display: none
:
//Flipper
var flipWords = ["a professional", "an experienced", "an innovational", "an enthusiastic"];
//Do not edit below//
//set initial
$(".flipper").html(flipWords[0]);
var flipperCountCurrent = 0;
setTimeout(flipper, 1500);
function flipper() {
if (flipperCountCurrent < flipWords.length - 1) {
flipperCountCurrent += 1;
} else {
flipperCountCurrent = 0;
}
//no animation
// $(".flipper").html(flipWords[flipperCountCurrent]);
var flipperSpan = $('.flipper');
var origWidth = flipperSpan.width();
flipperSpan.fadeTo(500, 0, function () {
flipperSpan.html(flipWords[flipperCountCurrent]).css("width", "auto");
var newWidth = flipperSpan.width();
flipperSpan.width(origWidth)
.animate({ width: newWidth + 'px' }, 250)
.fadeTo(500, 1);
});
setTimeout(flipper, 1500);
}
请注意,我修改了计时器时间,以便在调试时更快地循环。