用css2属性clip实现网页进度条

前言

看了网上一些关于网页进度条样式的资料,有很多方式实现,针对其展现形式,有用图片的,有用css2属性clip,有用flash的,本人就学会了一种,下面就简单来介绍一下。

css2的属性clip

如果你不是很明白clip属性,那么我就用大白话来解释一下,clip:rect(0px,0px,0px,0px)有四个值,同理是顺时针方向赋值,上右下左,记录改元素裁切方式,

例如:一个元素div,其width:300px;height:300px; clip:rect(0px,100px,60px,0px)

表示裁切的左边距离原元素上边缘0px;

裁切的右边距离原始左边缘100px;

裁切的下边距离原始元素上边缘是60px;

裁切的左边距离原始元素元素左边距离是0px;

如果明白了,那么再来一张图测试一下,如果设置是clip:rect(10px,100px,40px,5px)图片应该啥样子呢?如下

说到这里,我就当你明白了,继续往下说,

所以现在我们要改变的就是裁切元素的右值,让其等于制定的宽度,那么元素就全部呈现出来了。

设置进度条样式

对于css我做的还是比较low的,那么还是要贴出我很low的css代码,

<style type="text/css">
    #progressBox{width:300px;height:60px;position:absolute;left:0;border:1px solid #000;}
    #progressBar{background:blue;opacity:0.3;filter:alpha(opacity=30); width:300px;height:60px;position:absolute;clip:rect(0px,0px,60px,0px);left:0;top:0;}
    #progressText{color:Black;width:300px;height:60px;position:absolute;left:0;top:0;text-align:center; line-height:60px; font-family:Georgia;font-size:2em;font-weight:bold;}
</style>

页面元素

<body>
<div id="progressBox">
    <div id="progressBar"></div>
    <div id="progressText">0%</div>
</div>
<input type="button" value="开 始" id="btn" style="position:absolute;left:50%;top:20%;"/>
</body>

这里需要解释一下为啥会有3个元素,一个是元素容器(progressBox)基本就是想突出边框,让用户知道100%应该是有多长的容量,

第二个progressBar是表示不断变化的元素背景色设置为淡蓝色,

第三个是表示进度显示的数值文本

然后现在要做的就是js脚本

因为现在没有与服务器交互所以我就用setInterval来模拟增长因子

     timer = setInterval(progressFn, 10);
            function progressFn() {
                if (cent == max) {
                    clearInterval(timer);
                } else {
                    divbar.style.clip = "rect(0px," + cent + "px,60px,0px)";
                    divText.innerHTML = Math.ceil((cent / max) * 100) + "%";
                    cent++;
                }
            };

上边这段js是通过改变裁切的右边距实现展示进度条背景色,同时改变进度文本值。

XMLHttpRequest的progress事件实现前后交互的进度条显示

利用XMLHttpRequest第二版还定义的progress事件可以知道上传进度,来配合我们页面前端的展示进度来真正实现有后端交互的进度条

先上代码

var xhr = new XMLHttpRequest();
            xhr.timeout = 8000;
            xhr.open(‘POST‘, form.action);
            xhr.send(formData);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    console.log("xhr.responseText", xhr.responseText);
                } else {
                    console.log("xhr.statusText", xhr.statusText);
                }
            };
            xhr.onprogress = updateProgress;
            //xhr.upload.onprogress = updateProgress;
            function updateProgress(event) {
                if (event.lengthComputable) {
                    var percentComplete = event.loaded / event.total;
                    console.log(event.loaded, event.total, 300 * percentComplete);
                    progressFn(300 * percentComplete, max);
                }
            }
            xhr.ontimeout = function (event) {
                alert(‘请求超时!‘);
            }

其中的event.loaded表示当前加载了多少字节流,而event.total表示总共有多少字节流 得到这样一个百分比,

然后调用我们事先定义好的progressFn()函数就ok了,感觉还是挺方便的。

当然除了这种方式还有我前面提到过的配合flash来调用我们实现定义好的函数等。

下载地址

以上就是我今天想要分享的小知识点,本人水平有限,如果有错误和建议

还恳请指出,如果觉得对你有用,请支持一下。

时间: 2024-10-27 12:38:10

用css2属性clip实现网页进度条的相关文章

Andorid Clip 实现自定义进度条效果实例

Android系统提供了水平进度条供我们显示进度使用,水平进度条在显示进度时使用的就是Clip Drawable技术 下面我们就通过一个具体的实例来说明Clip Drawable的使用. 有个知识大家要注意: Clip类型的图片默认裁剪级别为0,此时是全部裁剪,图片看不见: 当级别为10000时,不裁剪图片,图片全部可见 程序运行结果:第一张为初始界面,第二张为点击5次界面,第三张为点击10的界面        新建一个名称为:Clip Drawable的Android 工程. 程序结构目录:

android 自定义view+属性动画实现充电进度条

近期项目中需要使用到一种类似手机电池充电进度的动画效果,以前没学属性动画的时候,是用图片+定时器的方式来完成的,最近一直在学习动画这一块,再加上复习一下自定义view的相关知识点,所以打算用属性动画和自定义view的方式来完成这个功能,将它开源出来,供有需要的人了解一下相关的内容. 本次实现的功能类似下面的效果: 接下来便详细解析一下如何完成这个功能,了解其中的原理,这样就能举一反三,实现其他类似的动画效果了. 详细代码请看大屏幕 https://github.com/crazyandcoder

Javascript 及 CSS3 实现进度条效果

一:css2 属性clip实现网页进度条:  在实现之前,我们先来介绍一下clip属性,因为这个属性在css2.1中很少使用到,所以我们有必要来了解一下: 浏览器支持程度:所有主流浏览器都支持 clip 属性. Clip属性在w3c官网是这样描述的:通过对元素进行裁剪来控制元素的可视区域,默认情况下 元素是不进行任何裁剪的. Clip裁剪的语法如下: .xx {clip:rect(<top>, <right>, <bottom>, <left>)} Rect

HTML5多图片拖拽上传带进度条

前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载完毕,还是window.onload之后算呢,对这些方面,我真不敢随意回答,因业务需求而定,本文想要说的是在图片上传的时候用到的进度条. 效果展示 详细参考请移步至html5demo HTML5 新增的拖拽相关事件说明 1.ondragover 效果图演示是所看见的可以将文件不仅仅是图片拖拽到该di

Bootstarp学习(十七)进度条

进度条 在网页中,进度条的效果并不少见,比如一个评分系统,比如加载状态等.就如下图所示的一个评分系统,他就是一个简单的进度条效果: 进度条和其他独立组件一样,开发者可以根据自己的需要,选择对应的版本: ? LESS版本:源码文件progress-bars.less ? Sass版本:源码文件_progress-bars.scss ? 编译后版本:bootstrap.css文件第4500行-第4575行 而且Bootstrap框架为大家提供多种样式风格的进度条,供大家使用(见右侧代码编辑器),这一

Jquery进度条插件 Progress Bar插件应用方法

搞的我小纠结了一会,最后感谢同事分享文章,得以结局,呵呵,小经验还是要保存的个人使用总结: <script type="text/ 网页特效" src="/Scripts/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="/Scripts/Method/jquery.progressbar.min.js">&

深入理解BootStrap Item14 -- 进度条(progressbar)

1.进度条 在网页中,进度条的效果并不少见,比如一个评分系统,比如加载状态等.就如下图所示的一个评分系统,他就是一个简单的进度条效果: 进度条和其他独立组件一样,开发者可以根据自己的需要,选择对应的版本: ? LESS版本:源码文件progress-bars.less ? Sass版本:源码文件_progress-bars.scss ? 编译后版本:bootstrap.css文件第4500行-第4575行 而且Bootstrap框架为大家提供多种样式风格的进度条,供大家使用. 2.进度条–基本样

Bootstrap中的进度条

进度条 在网页中,进度条的效果并不少见,比如一个评分系统,比如加载状态等.就如下图所示的一个评分系统,他就是一个简单的进度条效果: 进度条和其他独立组件一样,开发者可以根据自己的需要,选择对应的版本: ? LESS版本:源码文件progress-bars.less ? Sass版本:源码文件_progress-bars.scss ? 编译后版本:bootstrap.css文件第4500行-第4575行 而且Bootstrap框架为大家提供多种样式风格的进度条,供大家使用,这一小节只是给大家直观上

Android ProgressBar 反向进度条/进度条从右到左走

最近的项目,有个需求需要使用条状图显示比例,并且右对齐,见下图: 我想到了使用进度条,这样不就不需要在代码动态绘制条状了,省了很多活. 那么进度条怎样从右向左显示呢? 方案一: 将ProgressBar的前背景反着用,将前景色设置为和整个大背景同一色,将背景设置为你要的条状图颜色,这样就看不出实际的进度,看到的是进度背景,在视觉上看上去就是右对齐了.实际上还是原来那个进度条. 缺点:我这个进度条是放在ListView的item中的,点击listview,因为listview有选中的背景显示出来,