我需要的:
我需要一个动画省略号(...),一个点一个接一个地出现。动画需要循环。我想通过 jQuery 实现这一点
动画序列:
第一帧:等待您的选择
框架2:等待您的选择。
框架3:等待您的选择..
框架 4:等待您的选择...
我试过的:
我一直在研究一个插件来闪烁文本和脉动 .effect()。
我的问题:
有没有人对实现这一目标的最简单和最可靠的方法有任何建议?我很乐意被指出一种技术或功能。
我需要一个动画省略号(...),一个点一个接一个地出现。动画需要循环。我想通过 jQuery 实现这一点
第一帧:等待您的选择
框架2:等待您的选择。
框架3:等待您的选择..
框架 4:等待您的选择...
我一直在研究一个插件来闪烁文本和脉动 .effect()。
有没有人对实现这一目标的最简单和最可靠的方法有任何建议?我很乐意被指出一种技术或功能。
如果您只需要点一个接一个地出现一次,请尝试以下非常简单的方法:
<div id="message">Awaiting your selection</div>
var dots = 0;
$(document).ready(function() {
setInterval (type, 600);
});
function type() {
if(dots < 3) {
$('#message').append('.');
dots++;
}
}
如果您希望它们出现多次(被删除然后重新打印),您可以执行以下操作:
<div>Awaiting your selection<span id="dots"></span></div>
var dots = 0;
$(document).ready(function() {
setInterval (type, 600);
});
function type() {
if(dots < 3) {
$('#dots').append('.');
dots++;
} else {
$('#dots').html('');
dots = 0;
}
}
最后,查看我几年前写的教程。你可能会发现它很有用。
除了 StathisG 使用 jquery 的答案之外,您还可以通过 CSS3 使用动画迭代计数和动画延迟来实现它
@-webkit-keyframes opacity {
0% { opacity: 1; }
100% { opacity: 0; }
}
@-moz-keyframes opacity {
0% { opacity: 1; }
100% { opacity: 0; }
}
#loading {
text-align: center;
margin: 100px 0 0 0;
}
#loading span {
-webkit-animation-name: opacity;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: infinite;
-moz-animation-name: opacity;
-moz-animation-duration: 1s;
-moz-animation-iteration-count: infinite;
}
#loading span:nth-child(1) {
-webkit-animation-delay: 100ms;
-moz-animation-delay: 100ms;
}
#loading span:nth-child(2) {
-webkit-animation-delay: 300ms;
-moz-animation-delay: 300ms;
}
#loading span:nth-child(3) {
-webkit-animation-delay: 500ms;
-moz-animation-delay: 500ms;
}
演示:http: //jsfiddle.net/VXdhG/1/
我为它编写了一个简单的 JQuery 插件: https ://github.com/karbachinsky/jquery-DotAnimation
//<div class="element">Loading</div>
$(function () {
// Animation will start at once
var $el = $('.element');
$el.dotAnimation({
speed: 300,
dotElement: '.',
numDots: 3
});
});
JSFiddle 示例: https ://jsfiddle.net/bcz8v136/
以下代码基本上是我最终得到的。
JavaScript:
var animatedDot;
animatedDot = animatedDot || (function () {
var dots = 0;
var animatedDotInterval;
var selectorAnimatedDot = ".animatedDot";
return {
start: function(interval) {
if (!interval)
interval = 400;
animatedDotInterval = setInterval(this.nextFrame, interval);
},
stop: function() {
if (animatedDotInterval)
clearInterval(animatedDotInterval);
},
nextFrame: function() {
if ($(selectorAnimatedDot).length) {
if (dots < 3) {
$(selectorAnimatedDot).append('.');
dots++;
} else {
$(selectorAnimatedDot).html('');
dots = 0;
}
} else {
if (animatedDotInterval)
clearInterval(animatedDotInterval);
}
}
};
})();
function animatedDotTimeout(timeout) {
if (!timeout)
timeout = 10000;
animatedDot.start();
setTimeout(animatedDot.stop, timeout);
}
html:
Loading<span class="animatedDot"></span>
<script type="text/javascript">
$(document).ready(function() {
animatedDot.start();
});
</script>