Basic jQuery animation: Elipsis (three dots sequentially appearing)

后端 未结 4 2050
余生分开走
余生分开走 2021-02-04 17:24

What I need:

I need an animated elipisis (...), one dot appearing after the other. The animation needs to loop. I\'d like to achieve this via jQuery

Animation

相关标签:
4条回答
  • 2021-02-04 17:49

    If you just need the dots to appear one after another only once, try something very simple like the following:

    <div id="message">Awaiting your selection</div>​
    
    var dots = 0;
    
    $(document).ready(function() {
        setInterval (type, 600);
    });
    
    function type() {
        if(dots < 3) {
            $('#message').append('.');
            dots++;
        }
    }​
    

    http://jsfiddle.net/fVACg/

    If you want them to appear more than once (to be deleted and then re-printed), you can do something like the following:

    <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;
        }
    }​
    

    http://jsfiddle.net/wdVh8/

    Finally, checkout a tutorial I've written a few years ago. You might find it useful.

    0 讨论(0)
  • 2021-02-04 17:59

    I've written a simple JQuery plugin for it: 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 example: https://jsfiddle.net/bcz8v136/

    0 讨论(0)
  • 2021-02-04 18:03

    Beside StathisG's answer using jquery you can also achieve it through CSS3 using animation iteration count and animation-delay

    @-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: http://jsfiddle.net/VXdhG/1/

    0 讨论(0)
  • 2021-02-04 18:10

    The following code is essentially what I ended up with.

    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>
    
    0 讨论(0)
提交回复
热议问题