最终效果图:

  

html结构:

<div>
    <p class="p1">
        <span></span>
    </p>
    <p class="p2">
        <span></span>
    </p>
    <p class="p3">
        <span></span>
    </p>
    <p class="p4">
        <span></span>
    </p>
</div>

css样式:

div{
    position: relative;
    width: 253px;
    height: 9px;
    margin: 100px auto;
    overflow: hidden;
}
p{
    position: absolute;
    top: 0px;
    width: 100%;
    height: 9px;
    overflow: hidden;
}
p span{
    position: absolute;
    left: -11px;
    top:0px;
    width: 280px;
    height: 100%;
    background: linear-gradient(45deg,#1a6adf 25%,#578cdf 25%,#578cdf 50%,#1a6adf 50%,#1a6adf 75%,#578cdf 75%,#578cdf 100%);
    background-size: 28px 28px;
}
.p1{
    left: 0px;
    animation: m1 8s linear infinite;
}
.p2{
    left: -253px;
    animation: m2 8s linear infinite;
}
.p3{
    left: -506px;
    animation: m3 8s linear infinite;
}
.p4{
    left: -759px;
    animation: m4 8s linear infinite;
}
p.p2 span,p.p4 span{
    background-size: 28px 28px;
}
@keyframes m1{
    0%{
        left: 0px;
        z-index: 2;
    }
    25%{
        left: 253px;
        z-index: 1;
    }
    50%{
        left: -506px;
        z-index: 1;
    }
    75%{
        left: -253px;
        z-index: 2;
    }
    100%{
        left: 0px;
        z-index: 2;
    }
}
@keyframes m2{
    0%{
        left: -253px;
        z-index: 2;
    }
    25%{
        left: 0px;
        z-index: 2;
    }
    50%{
        left: 253px;
        z-index: 1;
    }
    75%{
        left: -506px;
        z-index: 1;
    }
    100%{
        left: -253px;
        z-index: 1;
    }
}
@keyframes m3{
    0%{
        left: -506px;
        z-index: 1;
    }
    25%{
        left: -253px;
        z-index: 2;
    }
    50%{
        left: 0px;
        z-index: 2;
    }
    75%{
        left: 253px;
        z-index: 1;
    }
    100%{
        left: -506px;
        z-index: 1;
    }
}
@keyframes m4{
    0%{
        left: -759px;
        z-index: 1;
    }
    25%{
        left: -506px;
        z-index: 1;
    }
    50%{
        left: -253px;
        z-index: 2;
    }
    75%{
        left: 0px;
        z-index: 2;
    }
    100%{
        left: 253px;
        z-index: 2;
    }
}

最初的时候实现页面加载进度条是公司的设计给的gif图,后来发现一个问题就是当我的页面样式和html都加载完成的时候图片没有加载出来,虽然只是很短的时间,但是不例如用户体验,这个也仅仅是页面初始化加载的时候会出现图片加载的问题,因此我想用css来实现那么就不会出现资源加载不统一的问题。那么我们来看一下他的实现原理:

首先我们给一个div来定义整个容器的大小,分别定义四个p来实现四个不同的条纹,在后期我们还要对每一段条纹进行截取所以每个p元素里边再嵌套一个span。我们用四个条纹实现看似一个条纹段在旋转的效果其实就是让条纹从左像右移动,既然是移动那么四个条纹的前后一定是衔接的。

这个是第一个条纹没有做限制的效果图,前后末端是没有规律可寻的,那么怎么让两条相同的条纹衔接起来看起来像是一条条纹呢,通过p和span我们对每条条纹进行截取:前端的截取到第一条深蓝纹路左上角为基准深蓝的1/2,末端截取到最后一条深蓝以右下角为基准深蓝宽度的1/2。截取后的效果如图,这样我把两个相同的条纹放在一个能够清楚的看到前后的衔接。这样四个条纹通过animation进行移动,思路类似于banner图轮转。当然菜菜一枚,有更好的方法多多交流~

css3 linear-gradient实现页面加载进度条效果的更多相关文章

  1. js页面加载进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. vue使用nprogress页面加载进度条

    vue使用nprogress页面加载进度条 NProgress是页面跳转是出现在浏览器顶部的进度条 官网:http://ricostacruz.com/nprogress/ github:https: ...

  3. ajax页面加载进度条插件

    下面两个都是youtube视频的加载进度条效果的ajax插件 一.官网:http://ricostacruz.com/nprogress/官网 github:https://github.com/rs ...

  4. jQuery模拟页面加载进度条

    因为我们无法通过任何方法获取整个页面的大小和当前加载了多少,所以想制作一个加载进度条的唯一办法就是模拟.那要怎么模拟呢? 我们知道,页面是从上往下执行的,也就是说我们可以大致估算出在页面的某个位置加载 ...

  5. js页面加载进度条(这个就比较正式了,改改时间就完事儿)

    不废话,直接上代码 思路不难,就是一个animate方法配合随机数 duration内个三秒钟,是自定义的,可以改成页面加载时间,这样就完美了 <!doctype html> <ht ...

  6. 插件二之页面加载进度条pace.js

    关于pace.js pace.js包含14样式,每种样式可以自定义颜色,官方下载中提供了几种颜色的主题,使用方式也很简单,引入pace的js文件跟所需样式文件即可 <link rel=" ...

  7. 自己写的页面加载进度条jquery插件

    (function ($) { var progressId = "progress" + Math.round(Math.random() * 100) var progress ...

  8. element admin中使用nprogress实现页面加载进度条

    主要是知道是nprogress这个组件实现的就可以了,组件的使用方法可参考:https://blog.csdn.net/ltr15036900300/article/details/47321217 ...

  9. 【原生JS插件】LoadingBar页面顶部加载进度条

    先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...

随机推荐

  1. mysql 基础

    (1)插入多条数据 INSERT INTO users(name, age) VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600); (2)将查询出来的字段插入其 ...

  2. XAML UserControl的继承

    欢迎访问Heroius博客:崩溃的脑壳查看文章原文! 前言 相信不少学习WPF和Silverlight的同学们都出于Winform的习惯,希望能够在新展示层框架中实现控件的继承.本文就是说明如何实现这 ...

  3. 为WIN8 APP创建置顶desktop应用

    Windows 8: TopMost window   I am working on my next ambitious project “MouseTouch” which is multi to ...

  4. RecyclerView的使用之多种Item加载布局

    精益求精,为了更加透彻熟练得掌握,本文再次给大家介石介绍下如何利用RecyclerView实现多Item布局的加载,多Item布局的加载的意思就是在开发过程中List的每一项可能根据需求的不同会加载不 ...

  5. monkey工具使用中遇到的问题之二:尝试了各种方法通过adb都无法找到设备

    测试环境: 1.用的是adt-bundle-windows-x86_64-20140702里面的adb 2.用的是手机模拟器(夜神) 问题描述: 已搭建好adb的环境,输入adb,可以看到以下相关信息 ...

  6. 使用Spring Task轻松完成定时任务

    一.背景 最近项目中需要使用到定时任务进行库存占用释放的需求,就总结了如何使用Spring Task进行简单配置完成该需求,本文介绍Spring3.0以后自定义开发的定时任务工具, spring ta ...

  7. 静态代理&动态代理

    原文地址:http://blog.csdn.net/partner4java/article/details/7048879 静态AOP和动态AOP. 静态代理: 代理对象与被代理对象必须实现同一个接 ...

  8. Swift - 点击事件奇偶次判断

    // 按钮点击事件 func onTouchUpInside() { struct touchUpInside { static var count: Int = 0 } touchUpInside. ...

  9. SQL中TOP,LIMIT,ROWNUM的用法

    SQL SERVER/MS Access的Select Top的用法: Select TOP number|percent table_columname FROM tablename MySQL/O ...

  10. *** wechat-php-sdk 微信公众平台php开发包

    wechat-php-sdk 微信公众平台php开发包,细化各项接口操作,支持链式调用,欢迎Fork此项目weixin developer SDK. 项目地址:https://github.com/d ...