前端之loading效果实现

首先分享两个loading的网站,https://loading.io/https://icons8.com/preloaders/,可以在网站上找loading,也可以自己用css实现loading效果,css浏览器前缀可以通过http://autoprefixer.github.io/这个网站转换

接下来直接上代码

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>加载进度条</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                z-index: 100;
                background-color: #fff;
            }
            .loading .pic {
                width:100px;
                height: 100px;
                position: absolute;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                margin: auto;
                font-size: 25px;
                text-align: center;
                line-height: 100px;
            }
            .loading .pic span {
                display: block;
                width: 80px;
                height: 80px;
                position: absolute;
                top: 10px;
                left: 10px;
                /* background: #066; */
                border-radius: 50%;
                box-shadow: 0 3px 0 #666;
                -webkit-animation: rotate 1s infinite linear;
                animation: rotate 1s infinite linear;
            }
            @-webkit-keyframes rotate {
                0% {
                    -webkit-transform: rotate(0deg);
                }
                100% {
                    -webkit-transform: rotate(360deg);
                }
            }
            @keyframes rotate {
                0% {
                    transform: rotate(0deg);
                }
                100% {
                    transform: rotate(360deg);
                }
            }
        </style>
    </head>
    <body>
        <div class="loading">
            <div class="pic">
                <!--外面的圈圈-->
                <span></span>
                <!--数据加载进度(百分比数字)-->
                <b>0%</b>
            </div>
        </div>

       ...//此处为页面需要加载的图片
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script>
        <script>
            $(function(){
                var img = $("img");
                var num = 0;

                img.each(function(i){               
                    var oImg = new Image();

                    oImg.onload = function(){
                        /*清掉重复请求*/
                        oImg.onload = null;

                        num ++;
                        var load = parseInt(num/$("img").size()*100)+"%";
                        $(".loading b").html(load);
                        if(num >= i){
                            $(".loading").fadeOut();
                        }
                    }

                    oImg.src = img[i].src;
                });
            });
        </script>
    </body>
</html>

波浪loading

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>进度条3</title>
        <style>
            .loading {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                z-index: 100;
                background-color: #fff;
            }
            .loading .pic {
                width: 50px;
                height: 50px;
                position: absolute;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                margin: auto;
            }
            .loading .pic i {
                display: block;
                float: left;
                width: 6px;
                height: 50px;
                background: #399;
                margin: 0 2px;
                /*各个竖线的高度缩小到40%的长度*/
                -webkit-transform: scaleY(0.4);
                    -ms-transform: scaleY(0.4);
                        transform: scaleY(0.4);
                /*调用动画load,动画完成总时间为1.2s,连续做动画*/
                -webkit-animation: load 1.2s infinite;
                        animation: load 1.2s infinite;
            }
            /*设置每个竖线的延长时间,第一个不用延长时间,第二个依次延长0.1s*/
            .loading .pic i:nth-child(2){-webkit-animation-delay: 0.1s;animation-delay: 0.1s;}
            .loading .pic i:nth-child(3){-webkit-animation-delay: 0.2s;animation-delay: 0.2s;}
            .loading .pic i:nth-child(4){-webkit-animation-delay: 0.3s;animation-delay: 0.3s;}
            .loading .pic i:nth-child(5){-webkit-animation-delay: 0.4s;animation-delay: 0.4s;}
            /*定义加载动画load*/
            @-webkit-keyframes load {
                0%, 40%, 100% {
                    -webkit-transform: scaleY(0.4);
                            transform: scaleY(0.4);
                }
                20% {
                    -webkit-transform: scaleY(1);
                            transform: scaleY(1);
                }
            }
            @keyframes load {
                0%, 40%, 100% {
                    -webkit-transform: scaleY(0.4);
                            transform: scaleY(0.4);
                }
                20% {
                    -webkit-transform: scaleY(1);
                            transform: scaleY(1);
                }
            }

        </style>
    </head>
    <body>
        <!-- 遮挡页面 -->
        <div class="loading">
            <div class="pic">
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
            </div>
        </div>
        ...//此处为页面需要显示的图片
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script>
        <script>
            document.onreadystatechange = function(){
                if(document.readyState == "complete"){
                    $(".loading").fadeOut();
                }
            }
        </script>
    </body>
</html>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端开发中,实现 loading 可以通过 CSS 和 JavaScript 来完成,具体方式如下: 1. 使用 CSS 实现 loading 动画: 可以使用 CSS 的动画效果实现 loading 动画,例如使用 @keyframes 定义动画关键帧,然后使用 animation 属性将动画应用到指定元素上。示例代码如下: ```css @keyframes loading { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading { width: 50px; height: 50px; border: 5px solid #ccc; border-top-color: #999; border-radius: 50%; animation: loading 1s linear infinite; } ``` 2. 使用 JavaScript 实现 loading 动画: 可以使用 JavaScript 动态创建 loading 元素,并设置其样式和动画,然后将 loading 元素添加到页面中。示例代码如下: ```javascript function showLoading() { // 创建 loading 元素 var loading = document.createElement('div'); loading.className = 'loading'; // 设置 loading 样式和动画 loading.style.width = '50px'; loading.style.height = '50px'; loading.style.border = '5px solid #ccc'; loading.style.borderTopColor = '#999'; loading.style.borderRadius = '50%'; loading.style.animation = 'loading 1s linear infinite'; // 将 loading 元素添加到页面中 document.body.appendChild(loading); } function hideLoading() { // 移除 loading 元素 var loading = document.querySelector('.loading'); if (loading) { loading.parentNode.removeChild(loading); } } ``` 以上代码实现了一个简单的 loading 动画,showLoading 函数用于显示 loading,hideLoading 函数用于隐藏 loading。可以根据实际需求调整 loading 的样式和动画。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值