博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超赞的CSS3进度条 可以随进度显示不同颜色
阅读量:6904 次
发布时间:2019-06-27

本文共 3199 字,大约阅读时间需要 10 分钟。

原文:

现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡了而关掉你的网页。前几天我在网上看到一款和一般进度条不太一样的玩意,它的外观是一条直线,末端有个小球,在进度变化时可以显示数字百分比,更可以用不同颜色来表示当前进度的状态。来看看效果图。

一看进度条外观,还不错吧。

同时,我们也可以在这里看到

接下来我们来分析一下这款HTML5进度条的实现源码,篇幅有限,我们只挑核心的代码来说。

HTML代码很简单,构造一个进度条容器和数字百分比容器:

0

首先我们来对进度条的容器进行样式渲染,利用CSS3的渐变属性来实现不同进度变换颜色的效果:

.loader-container {
height: 6px; width: 600px; position: absolute; top: 50%; left: 50%; margin-top: -3px; margin-left: -300px; background-color: transparent; background-image: -webkit-linear-gradient(left, #5bd8ff, #ff0000); background-image: -moz-linear-gradient(left, #5bd8ff, #ff0000); background-image: -o-linear-gradient(left, #5bd8ff, #ff0000); background-image: -ms-linear-gradient(left, #5bd8ff, #ff0000); background-image: linear-gradient(left, #5bd8ff, #ff0000); box-shadow: inset 0 -2px 2px rgba(0, 0, 0, 0.4); border-radius: 3px 0 0 3px;}.loader-container:after {
content: ""; display: block; position: absolute; right: 0; top: 50%; width: 1em; height: 1em; border-radius: 50%; margin-top: -0.5em; margin-right: -1em; background-image: -webkit-linear-gradient(top, #000000, #212121); background-image: -moz-linear-gradient(top, #000000, #212121); background-image: -o-linear-gradient(top, #000000, #212121); background-image: -ms-linear-gradient(top, #000000, #212121); background-image: linear-gradient(top, #000000, #212121);}

接下来是末端小圆球的样式:

.loader-container.done:after {
background: Red;}.run .runner {
content: ""; position: absolute; right: 0; height: 100%; width: 0%; background-color: transparent; background-image: -webkit-linear-gradient(top, #000000, #212121); background-image: -moz-linear-gradient(top, #000000, #212121); background-image: -o-linear-gradient(top, #000000, #212121); background-image: -ms-linear-gradient(top, #000000, #212121); background-image: linear-gradient(top, #000000, #212121); animation: loader 10s linear;}

这里也是利用的CSS3的渐变属性。

然后是数字百分比的样式属性,这里随着进度变化,数字百分比的颜色也会发生变化。、

.meter {
position: absolute; top: 0; right: 0; font-size: 2em; margin-top: .3em; color: #ff0000; animation: meter 10s linear; text-shadow: 0 -1px 0 #333333;}.meter:after {
content: "%";}

最后,我们再来看看JS代码,其实js要完成的工作非常简单,只需要将CSS3渲染好的进度条动起来就好,看代码:

var Loader = function () {      var loader = document.querySelector('.loader-container'),      meter = document.querySelector('.meter'),      k, i = 1,      counter = function () {        if (i <= 100) {             meter.innerHTML = i.toString();          i++;        } else {          window.clearInterval(k);        }      };    return {      init: function (options) {      options = options || {};      var time = options.time ? options.time : 0,            interval = time/100;              loader.classList.add('run');      k = window.setInterval(counter, interval);       setTimeout(function () {                  loader.classList.add('done');      }, time);    },  }}();Loader.init({      // If you have changed the @time in LESS, update this number to the corresponding value. Measured in miliseconds.      time: 10000});

初次写博客,可以代码分析的不是很好,有什么问题可以留言指正,不过,这款进度条个人真的很喜欢,老外的创意真是无限啊。

转载地址:http://lzldl.baihongyu.com/

你可能感兴趣的文章
nodejs检查已安装模块
查看>>
solr联合多个字段进行检索(multivalued和copyfield的使用)
查看>>
准备PPT过程中的一些文档记录
查看>>
Catel(翻译)-为什么选择Catel
查看>>
SQL Server 数据库备份和还原
查看>>
微信小程序 - 贝塞尔曲线(购物车效果)
查看>>
CI框架 default_controller 如何设置为:'目录/Controller' 转
查看>>
Node.js之网游服务器实践
查看>>
Spring-SpringMVC父子容器&AOP使用总结
查看>>
service_names配置不正确,导致dg创建失败
查看>>
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN
查看>>
Spring Boot配置文件放在jar外部
查看>>
【2018年12月10日】A股最便宜的股票
查看>>
Golang编程经验总结
查看>>
重启Oracle服务
查看>>
服务器意外关机,如何查看关机起因?
查看>>
杭电2049
查看>>
翻译的问题
查看>>
iOS的异步绘制--YYAsyncLayer源码分析
查看>>
RedHat Linux tftp服务器配置
查看>>