我需要一个动画的elipisis(...),一个点出现在另一个之后。动画需要循环播放。我想通过jQuery实现这个目标
第1帧:等待您的选择
第2帧:等待您的选择。
第3帧:等待您的选择..
第4帧:等待您的选择...
我一直在研究plugin to blink text和pulsate .effect()。
有没有人对最简单,最可靠的方法有任何建议?我很乐意被指出技术或功能。
答案 0 :(得分:17)
除了使用jquery的StathisG的答案,你也可以使用{3}}和animation iteration count
通过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;
}
DEMO: animation-delay
答案 1 :(得分:15)
如果您只需要一次又一次地出现这些点,请尝试以下非常简单的方法:
<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;
}
}
最后,结账我几年前写的tutorial。您可能会发现它很有用。
答案 2 :(得分: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/
答案 3 :(得分:0)
以下代码基本上就是我最终的目标。
<强> 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>