CSS3动画实现loading加载图标

CSS3动画实现loading加载图标,并利用JavaScript封装成插件,方便以后调用。

index.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black" name="apple-mobile-web-app-status-bar-style">
    <meta content="telephone=no" name="format-detection">
    <meta content="email=no" name="format-detection">
    <title>Spinner</title>
    <link rel="stylesheet" href="./css/main.css">
</head>
<body>
    <script src="./js/spinner.js"></script>
    <script>
        window.onload = function(){
            spinner.show();
        }
    </script>
</body>
</html>

spinner.js

(function(exports){
    var document = exports.document,
        mask = createDivWithClassName(‘spinner-mask‘),
        box = createDivWithClassName(‘spinner-box‘),
        spinner = createDivWithClassName(‘spinner‘),
        spinner_container_1 = createDivWithClassName(‘spinner-container‘),
        spinner_container_2,
        spinner_container_3,
        circle_1 = createDivWithClassName(‘circle1‘),
        circle_2 = createDivWithClassName(‘circle2‘),
        circle_3 = createDivWithClassName(‘circle3‘),
        circle_4 = createDivWithClassName(‘circle4‘);

    spinner_container_1.appendChild(circle_1);
    spinner_container_1.appendChild(circle_2);
    spinner_container_1.appendChild(circle_3);
    spinner_container_1.appendChild(circle_4);
    spinner_container_2 = spinner_container_1.cloneNode(true);
    spinner_container_3 = spinner_container_1.cloneNode(true);
    spinner_container_1.className += ‘ container1‘;
    spinner_container_2.className += ‘ container2‘;
    spinner_container_3.className += ‘ container3‘;
    spinner.appendChild(spinner_container_1);
    spinner.appendChild(spinner_container_2);
    spinner.appendChild(spinner_container_3);
    box.appendChild(spinner);
    document.body.appendChild(mask);
    document.body.appendChild(box); 

    var self = Object.create(null);
    self.show = function(){
        mask.style.display = box.style.display = ‘block‘;
    };
    self.hide = function(){
        mask.style.display = box.style.display = ‘none‘;
    };
    Object.seal(self);
    Object.freeze(self);
    Object.preventExtensions(self);
    exports.spinner = self;

    function createDivWithClassName(classname){
        var div = document.createElement(‘div‘);
        div.setAttribute(‘class‘, classname);
        return div;
    }
})(window);

main.css

html, body{
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    overflow-x: hidden;
    overflow-y: auto;
}
.spinner-mask{
    width: 100%;
    height: 100%;
    position: fixed;
    left: 0;
    top: 0;
    background-color: transparent;
    display: none;
}
.spinner-box{
    width: 60px;
    height: 60px;
    position: fixed;
    top: 50%;
    left: 0;
    right: 0;
    margin: 0 auto;
    background-color: #666;
    border-radius: 4px;
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
    display: none;
}
.spinner{
    width: 20px;
    height: 20px;
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    margin: 0 auto;
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}
.container1>div, .container2>div, .container3>div{
    width: 6px;
    height: 6px;
    background-color: #eee;
    border-radius: 50%;
    position: absolute;
    -webkit-animation: bouncedelay 1.2s infinite ease-in-out;
    animation: bouncedelay 1.2s infinite ease-in-out;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
}
.spinner .spinner-container{
    width: 100%;
    height: 100%;
    position: absolute;
}
.container2{
    -webkit-transform: rotateZ(45deg);
    transform: rotateZ(45deg);
}
.container3{
    -webkit-transform: rotateZ(90deg);
    transform: rotateZ(90deg);
}
.circle1{
    left: 0; top: 0;
}
.circle2{
    right: 0; top: 0;
}
.circle3{
    right: 0; bottom: 0;
}
.circle4{
    left: 0; bottom: 0;
}
.container1 .circle1{
    -webkit-animation-delay: -1.2s;
    animation-delay: -1.2s;
}
.container2 .circle1{
    -webkit-animation-delay: -1.1s;
    animation-delay: -1.1s;
}
.container3 .circle1{
    -webkit-animation-delay: -1.0s;
    animation-delay: -1.0s;
}
.container1 .circle2{
    -webkit-animation-delay: -0.9s;
    animation-delay: -0.9s;
}
.container2 .circle2{
    -webkit-animation-delay: -0.8s;
    animation-delay: -0.8s;
}
.container3 .circle2{
    -webkit-animation-delay: -0.7s;
    animation-delay: -0.7s;
}
.container1 .circle3{
    -webkit-animation-delay: -0.6s;
    animation-delay: -0.6s;
}
.container2 .circle3{
    -webkit-animation-delay: -0.5s;
    animation-delay: -0.5s;
}
.container3 .circle3{
    -webkit-animation-delay: -0.4s;
    animation-delay: -0.4s;
}
.container1 .circle4{
    -webkit-animation-delay: -0.3s;
    animation-delay: -0.3s;
}
.container2 .circle4{
    -webkit-animation-delay: -0.2s;
    animation-delay: -0.2s;
}
.container3 .circle4{
    -webkit-animation-delay: -0.1s;
    animation-delay: -0.1s;
}
@-webkit-keyframes bouncedelay{
    0%, 100%{
        -webkit-transform: scale(0);
        transform: scale(0);
    }
    50%{
        -webkit-transform: scale(1);
        transform: scale(1);
    }
}
@keyframes bouncedelay{
    0%, 100%{
        -webkit-transform: scale(0);
        transform: scale(0);
    }
    50%{
        -webkit-transform: scale(1);
        transform: scale(1);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 06:38:40

CSS3动画实现loading加载图标的相关文章

16款纯CSS3实现的loading加载动画

分享16款纯CSS3实现的loading加载动画.这是一款实用的可替代GIF格式图片的CSS3加载动画代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="grid"> <div class="cell"> <div class="card"> <span class="spinner-loader">Loading…</span

css3超炫8种loading加载特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

10个样式各异的CSS3 Loading加载动画

前几天我在园子里分享过2款很酷的CSS3 Loading加载动画,今天又有10个最新的Loading动画分享给大家,这些动画的样式都不一样,实现起来也并不难,你很容易把它们应用在项目中,先来看看效果图: 你也可以在这里查看DEMO演示. 下面我们来挑选几个比较典型的案例来分析一下代码. 先来看看第一个案例,是条状动画,HTML代码如下: <div id="caseVerte"> <div id="case1"></div> <

prefix css3漏斗Loading加载动画

<!DOCTYPE html><html><head><meta charset="gb2312"><title>css3漏斗Loading加载动画</title><style>* { margin: 0px; padding: 0px; border: 0px;}html, body { min-height: 100%;}body { background: radial-gradient(#eee

原生JS+ CSS3创建loading加载动画;

效果图: js创建loading show = function(){ //loading dom元素 var Div = document.createElement("div"); Div.setAttribute("class","ui-loading"); var chidDiv = document.createElement("div"); chidDiv.setAttribute("class"

HTML5 五彩圆环Loading加载动画实现教程

今天我们要来介绍一款效果很特别的HTML5 Loading加载动画,不像其他的Loading动画,这款Loading动画颜色很丰富,并且在转圈的时候还有淡入淡出的效果.每一个圆环不停地旋转,从而实现加载动画的效果.首先你可以看看效果演示: 你也可以在这里查看在线演示 下面分享一下这款HTML5 Loading动画的实现过程,主要是HTML代码和CSS3代码,以及初始化的JS代码. 首先是HTML代码,只定义一个Loading容器,非常简单. HTML代码: <div id=”hold”><

Android之使用帧动画实现自定义loading加载布局

在项目开发过程中,我们总是需要自定义一些和项目风格类似的loading页面,这时候我们可以考虑使用帧动画来完成这一功能 假如我们要实现如下图所示的帧动画加载效果: 我们可以选取三张帧图片: 具体在帧动画中怎么使用? An AnimationDrawable defined in XML consists of a single <animation-list> element, and a series of nested<item> tags. Each item defines

WPF动画 - Loading加载动画

存在问题: 最近接手公司一个比较成熟的产品项目开发(WPF桌面端),其中,在登陆系统加载时,60张图片切换,实现loading闪烁加载,快有密集恐惧症了!!! 代码如下: private void LoadPics() { try { _storyboard = new Storyboard(); for (int i = 0; i < 60; i++) { ObjectAnimationUsingKeyFrames oauf = new ObjectAnimationUsingKeyFrame

Unity 显示Loading(加载)进度 对于网上流行的方法进行更正

实际上就是MOMO贴出来的方法其实是有问题的,用过的才知道.至于别的几乎不用找,根本一个抄一个,抄来抄去都是一样,没自己的东西. 用过MOMO那个方法的都应该会发现了,当进度条开始显示的时候,基本上已经加载到80%了,可能也跟Unity版本有关,我的是4.3.4 .但是实际上Unity的工作原理差不多就那样,在Start里面直接开始加载的协程,实际上一开始就会阻塞,导致画面刚刚渲染出来的时候,已经完成了一部分的加载,而很多资源会在一开始就加载了,如果这里的资源太多了,那么就会像我一样,显示很长时