我们先看看最终效果:

[url=169]169[/url]

第一步,基本
构建基本的代码,看效果演示:<!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> 
<title>制作进度条的两种方法</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<style> 
*{ 
    margin:0; 
    padding:0; 

body{font-size:12px;}h1{font-size:15px;} 
.wrap{ 
    font-size: 12px; 
    margin:40px auto; 
    width:400px; 

/*进度条样式*/ 
.progressbar_1{ 
     
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    color:#222; 

.progressbar_1 .bar { 
     
    height:16px; 
    width:0; 

</style> 
</head> 
<body> 
<div class="wrap"> 
    <h1>1,构建基本的HTML结构和CSS样式</h1>

0%的状态: 
    <div class="progressbar_1"> 
        <div class="bar"></div> 
    </div>

50%的状态: 
    <div class="progressbar_1"> 
        <div class="bar" style="width: 50%;"></div> 
    </div>

80%的状态: 
    <div class="progressbar_1"> 
        <div class="bar" style="width: 80%;"></div> 
    </div>

100%的状态: 
    <div class="progressbar_1"> 
        <div class="bar" style="width: 100%;"></div> 
    </div>     
    这步非常简单,相信大家都能看明白。 
</div> 
</body> 
</html>

第二步,给进度条增加文字显示
<!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> 
<title>制作进度条的两种方法</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<style> 
*{ 
    margin:0; 
    padding:0; 

body{font-size:12px;}h1{font-size:15px;} 
.wrap{ 
    font-size: 12px; 
    margin:40px auto; 
    width:400px; 

/*进度条样式*/ 
.progressbar_1{ 
     
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 

.progressbar_1 .bar { 
     
    height:16px; 
    width:0; 

/*绝对定位*/ 
.progressbar_2{ 
     
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    text-align:center; 
    position:relative; 

.progressbar_2 .bar { 
     
    height:16px; 
    width:0; 
    position:absolute; 
    left:0; 
    top:0; 

.progressbar_2 .text { 
    height:16px; 
    position:absolute; 
    left:0; 
    top:0; 
    width:100%; 
    line-height:16px; 

/*绝对定位 + z-index */ 
.progressbar_3{ 
     
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    text-align:center; 
    position:relative; 

.progressbar_3 .bar { 
     
    height:16px; 
    width:0; 
    position:absolute; 
    left:0; 
    top:0; 
    z-index:10; 

.progressbar_3 .text { 
    height:16px; 
    position:absolute; 
    left:0; 
    top:0; 
    width:100%; 
    line-height:16px;

z-index:100; 

</style> 
</head> 
<body> 
<div class="wrap"> 
    <h1>2,给进度条增加文字显示</h1>

一个进度条需要包含对应的进度文字显示,本例中,我希望文字显示在进度条的中间。 
    接下来,我们在进度条元素内增加一个显示 文字的div。

很显然,直接添加div后,div会占据原先绿色进度条的位置。看下面例子:

<div class="progressbar_1"> 
        <div >50%</div> 
        <div class="bar" style="width: 50%;"></div> 
    </div>

那么有什么办法使得文字 和 绿色进度条 同时显示在 一起呢?

估计你也想到了,那就是绝对定位。通过对父元素添加相对定位,然后给子元素添加绝对定位,设置子元素的左边距和上边距都为0。

看下面的例子:

<div class="progressbar_2"> 
        <div class="text">50%</div> 
        <div class="bar" style="width: 50%;"></div> 
    </div>

这时你会发现文字被遮盖了,相信你第一时间就会想到用 z-index 去设置他们的层级关系。

对,我也选择的是它。通过给他们设置不同的z-index值来确定层级关系,值越大越显示在上面。看下面例子:

<div class="progressbar_3"> 
        <div class="text">50%</div> 
        <div class="bar" style="width: 50%;"></div> 
    </div>

<div class="progressbar_3"> 
        <div class="text">80%</div> 
        <div class="bar" style="width: 80%;"></div> 
    </div>

<div class="progressbar_3"> 
        <div class="text">100%</div> 
        <div class="bar" style="width: 100%;"></div> 
    </div>

这是第一种方式,也是目前最为流行的 制作进度条的方式。
    他的原理就是采用 相对定位和绝对定位,然后通过背景不同来控制进度。 
    接下来我们看第二种方式制作进度条。
</div> 
</body> 
</html> 
他的原理就是采用 相对定位和绝对定位,然后通过背景不同来控制进度。 接下来我们看第二种方式制作进度条。 
第三步,制作进度条的第二种方式---直接使用图片+背景图片 
<!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> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<style> 
*{ 
    margin:0; 
    padding:0; 

body{font-size:12px;}h1{font-size:15px;} 
.wrap{ 
    font-size: 12px; 
    margin:40px auto; 
    width:400px; 

/*不带文字*/ 
.progress{ 
    border:0; 
    width: 152px; 
    height: 18px; 
    background:url(img/progress.gif) no-repeat -100px 50%; 

/*带文字显示*/ 
.progressbar_3{ 
    width:152px; 
    position:relative; 
    height:18px; 
    text-align:center; 
    position:relative; 
    color:#222; 

.progressbar_3 .text{ 
    width:152px; 
    position:absolute; 
    left:0; 
    top:0; 
    height:18px; 
    line-height:18px; 
    z-index:100; 

.progressbar_3 .progress{ 
    width:152px; 
    position:absolute; 
    left:0; 
    top:0; 
    height:18px; 
    z-index:10; 

</style> 
</head> 
<body> 
<div class="wrap"> 
    <h1>3,制作进度条的第二种方式---直接使用图片+背景图片</h1>

<img class="progress" width="152" height="18" title="0%" alt="0%" src="img/bg.gif" style="background-position:-152px 50%;"/>

<img class="progress" width="152" height="18" title="20%" alt="20%" src="img/bg.gif" style="background-position:-120px 50%;"/>

<img class="progress" width="152" height="18" title="50%" alt="50%" src="img/bg.gif" style="background-position:-76px 50%;"/>

<img class="progress" width="152" height="18" title="80%" alt="80%" src="img/bg.gif" style="background-position:-30px 50%;"/>

<img class="progress" width="152" height="18" title="100%" alt="100%" src="img/bg.gif" style="background-position: 0 50%;"/>

如果你想在上面进度条上添加进度显示的文字,你应该知道怎么办了(如果你仔细阅读过前面的例子的话)。

对,就是使用绝对定位+相对定位来控制。

<div class="progressbar_3"> 
        <div class="text">0%</div> 
        <img class="progress" width="152" height="18" title="0%" alt="0%" src="img/bg.gif" style="background-position:-152px 50%;"/> 
    </div>

<div class="progressbar_3"> 
        <div class="text">20%</div> 
        <img class="progress" width="152" height="18" title="20%" alt="20%" src="img/bg.gif" style="background-position:-120px 50%;"/> 
    </div>

<div class="progressbar_3"> 
        <div class="text">50%</div> 
        <img class="progress" width="152" height="18" title="50%" alt="50%" src="img/bg.gif" style="background-position:-76px 50%;"/> 
    </div>

<div class="progressbar_3"> 
        <div class="text">80%</div> 
        <img class="progress" width="152" height="18" title="80%" alt="80%" src="img/bg.gif" style="background-position:-30px 50%;"/> 
    </div>

<div class="progressbar_3"> 
        <div class="text">100%</div> 
        <img class="progress" width="152" height="18" title="100%" alt="100%" src="img/bg.gif" style="background-position: 0 50%;"/> 
    </div> 
    这种方式的原理就是 利用 一张img图片,然后给img图片又设置背景图,通过背景图的background position 属性 来显示不同的部分。
    当然这种方式 对图片有点要求 。你仔细一点就会发现,宽度是img的2倍。
    另外图片必须是gif透明的,也就是说空心的。呵呵。看不到进度条。
    总的来说,这应该算一个技巧,在实际项目中,也是能使用的。

<p style="float:right;">Dev By <a href="http://www.huiyi8.com" >huiyi8素材</a></p> 
</div> 
</body> 
</html> 
这种方式的原理就是 利用 一张img图片,然后给img图片又设置背景图,通过背景图的background position 属性 来显示不同的部分。 
当然这种方式 对图片有点要求 。你仔细一点就会发现,宽度是img的2倍。 
另外图片必须是gif透明的,也就是说空心的。呵呵。看不到进度条。例子中background-position是用的px值,实际可以采用 % 来控制 更精确, 比如: background-position:80% 50%;等。 
总的来说,这应该算一个技巧,在实际项目中,也是能使用的。 
第四步,应用 
最后我们看一个简单的应用: 
<!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> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<style> 
*{ 
    margin:0; 
    padding:0; 

body{font-size:12px;}h1{font-size:15px;} 
.wrap{ 
    font-size: 12px; 
    margin:40px auto; 
    width:400px; 
}

/*不带文字*/ 
.progress{ 
    border:0; 
    width: 152px; 
    height: 18px; 
    background:url(img/progress.gif) no-repeat -100px 50%; 

/*带文字显示*/ 
.progressbar_3{ 
    width:152px; 
    position:relative; 
    height:18px; 
    text-align:center; 
    position:relative; 
    color:#222; 

.progressbar_3 .text{ 
    width:152px; 
    position:absolute; 
    left:0; 
    top:0; 
    height:18px; 
    line-height:18px; 
    z-index:100; 

.progressbar_3 .progress{ 
    width:152px; 
    position:absolute; 
    left:0; 
    top:0; 
    height:18px; 
    z-index:10; 

</style>

<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript" language="javascript" charset="gb2312"></script> 
<script> 
$(function(){ 
    var $txt = $(".progressbar_3 .text"); 
    var $progress = $(".progressbar_3 .progress");

$("#addTo").click(function(){ 
        $progress.animate({"backgroundPosition":"-76px 50%"},500,function(){ 
            $(this).attr({"alt":"50%","title":"50%"}); 
            $txt.text("50%"); 
            $("<p>进度条加载完毕!</p>").appendTo(".wrap"); 
        }); 
    }); 
    $("#cutdown").click(function(){ 
        $progress.animate({"backgroundPosition":"-120px 50%"},500,function(){ 
            $(this).attr({"alt":"20%","title":"20%"}); 
            $txt.text("20%"); 
            $("<p>进度条加载完毕!</p>").appendTo(".wrap"); 
        }); 
    }); 
}); 
</script> 
</head> 
<body> 
<div class="wrap"> 
    <h1>4,应用</h1>

<div class="progressbar_3"> 
        <div class="text">0%</div> 
        <img class="progress" width="152" height="18" title="0%" alt="0%" src="img/bg.gif" style="background-position:-152px 50%;"/> 
    </div>

<button id="addTo" >增加至50%</button> 
    <button id="cutdown" >减少至20%</button>

我使用的是第二种方式来做控制,通过animate来控制图片的background-position来达到进度条效果。
    当然你也可以使用第一种方式做,第一种方式需要改变的是进度条的 width 属性。 
    <p style="float:right;">Dev By <a href="http://www.huiyi8.com" >huiyi8素材</a></p>     
</div> 
</body> 
</html> 
通过animate来控制图片的background-position来达到进度条效果。 
当然你也可以使用第一种方式做,第一种方式需要改变的是进度条的 width 属性。

源于:http://www.huiyi8.com/sc/24044.html

转载于:https://www.cnblogs.com/lhrs/p/4097342.html

javascript 进度条的几种方法相关推荐

  1. 组态王怎么做进度条_三种方法制作进度条效果

    进度条可以说出现在我们生活的方方面面,游戏.视频加载会碰到它,刷新会碰到它,就连网络不顺畅时也会碰到它.进度条不仅仅只是作为信息载入时的标志,还可以运用到片头开场,让观众对接下来的视频内容产生好奇和期 ...

  2. CAD进度条设置3种方法

    一.ProgressMeter类 通过使用Autodesk.AutoCAD.Runtime命名空间中的ProgressMeter来显示,需要添加对acdbdmgd.dll.acmgd.dll.DotN ...

  3. css圆环进度条的几种方法

    方法一: 用H5自带的canvas画圆环 <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  4. python中实现进度条的四种方法

    文章目录 (一): python程序中使用time模块可以让程序休眠 timesleep(t) 参数t是推迟执行的秒数 import time for i in range(0, 101, 2):ti ...

  5. Python实现进度条的5种方式

    转载自:https://blog.csdn.net/qq_36853469/article/details/103925626 这里只列举了部分方法,其他方法或python库暂时还没使用到 1.不用库 ...

  6. JavaScript 获得对象的N种方法 [转]

    JavaScript 获得对象的N种方法 [转] 方法如下: document.getElementById(ID)        //获得指定ID值的对象 document.getElementsB ...

  7. JavaScript 数组遍历的五种方法(转)

    转自:JavaScript 数组遍历的五种方法 这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下 在使用 JavaS ...

  8. javascript进度条(js实例)

    利用javascript模拟下载进度条,可以防止重复点击. 思路:用两个div嵌套,开始时,初始时里面的div宽度为0,当点击下载时,让里面的div宽度一直+1,当加到100时停止.完成下载! < ...

  9. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

最新文章

  1. mysql 释放错误连接_JSP连接MySQL后数据库链接释放的错误
  2. 2亿美元投入+软硬件新服务!华为加速构建计算产业生态,侯金龙:要与开发者共成长...
  3. Apache ZooKeeper -从初始化到对外提供服务的过程解析( 集群模式 )
  4. Linux 编译安装内核
  5. HAProxy实现负载均衡及高可用集群(corosync+pacemaker)
  6. 【在线报表设计】提升报表外观的15个技巧
  7. ROS 可视化(一): 发布PointCloud2点云数据到Rviz
  8. python简单代码-用Python代码实现5种最好的、简单的数据可视化!
  9. GDI+ 绘制多行文本,自动换行。
  10. linux系统下安装游戏,在Linux系统下安装GameHub来管理所有游戏
  11. Opencv4找不到CV_FOURCC
  12. android studio 上手使用 大水逼问题
  13. kaggle 预测房价竞赛总结 动手学深度学习v2 pytorch
  14. 掌握QCC推行方法,为企业创造经济效益
  15. 【网络工程师配置篇】华三交换机基本配置大全(文末附下载链接),网络工程师必备手册
  16. Dreamweaver中插入透明Flash
  17. 服务器装win7找不到硬盘驱动,电脑找不到硬盘驱动器,教你win7电脑找不到硬盘驱动器的解决方法...
  18. Unity商店下载存储地址
  19. 中级经济师工商管理和人力资源哪个专业容易考一些?
  20. (三)Grahpics之Blit

热门文章

  1. libjpeg在windows下的编译
  2. oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
  3. Java Sokect编程之HTTP请求
  4. 【Flink】Flink CDH6.3.2 下的yarn per job模式 savepoint和checkpoint,卡住,没有保存成功文件
  5. 【Spark】Spark cache 报错 Exception thrown in awaitResult
  6. 【kafka】kafka 新增节点 报错 InconsistentBrokerIdException Configured broker.id doesn‘t match
  7. 【nexus】nexus : mac 安装 nexus
  8. 20-100-010-安装-Flink集群安装 flink-1.4.0-bin-hadoop27-scala_2.11
  9. Spark学习:spark读取HBase数据报异常java.io.NotSerializableException
  10. mysql bdb 锁_BDB锁共享区域