Home > Web Front-end > JS Tutorial > Introduction to several methods of implementing progress bars in JavaScript

Introduction to several methods of implementing progress bars in JavaScript

黄舟
Release: 2017-11-21 09:54:03
Original
8486 people have browsed it

In our previous article, we introduced to you examples of JavaScript implementation of progress bars. We all know that in actual projects, progress bars are still very useful. Today we will continue to introduce the benefits of JavaScript implementation of progress bars. Which ways!

Let’s take a look at the final effect first:

Introduction to several methods of implementing progress bars in JavaScript

The first step is to basically
Build the basic code and see the effect demonstration :

<!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{ 
    background-color:#eee; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    color:#222; 
} 
.progressbar_1 .bar { 
    background-color:#6CAF00; 
    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>
Copy after login

The second step is to add text to the progress bar to display

<!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{ 
    background-color:#eee; 
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
} 
.progressbar_1 .bar { 
    background-color:#6CAF00; 
    height:16px; 
    width:0; 
} 
/*绝对定位*/ 
.progressbar_2{ 
    background-color:#eee; 
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    text-align:center; 
    position:relative; 
} 
.progressbar_2 .bar { 
    background-color:#6CAF00; 
    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{ 
    background-color:#eee; 
    color:#222; 
    height:16px; 
    width:150px; 
    border:1px solid #bbb; 
    text-align:center; 
    position:relative; 
} 
.progressbar_3 .bar { 
    background-color:#6CAF00; 
    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>
Copy after login

him The principle is to use relative positioning and absolute positioning, and then control the progress through different backgrounds. Next we look at the second way to create a progress bar.
The third step, the second way to make a progress bar---directly use pictures + background pictures

<!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"    style="max-width:90%" title="0%" alt="0%" src="img/bg.gif" style="background-position:-152px 50%;"/>          
       <img class="progress" width="152"    style="max-width:90%" title="20%" alt="20%" src="img/bg.gif" style="background-position:-120px 50%;"/> 
        <img class="progress" width="152"    style="max-width:90%" title="50%" alt="50%" src="img/bg.gif" style="background-position:-76px 50%;"/> 
         <img class="progress" width="152"    style="max-width:90%" title="80%" alt="80%" src="img/bg.gif" style="background-position:-30px 50%;"/> 
        <img class="progress" width="152"    style="max-width:90%" 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"    style="max-width:90%" 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"    style="max-width:90%" 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"    style="max-width:90%" 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"    style="max-width:90%" 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"    style="max-width:90%" 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.jb51.net" >jb51.net</a></p> 
</div> 
</body> 
</html>
Copy after login

The fourth step, apply
Finally, let’s look at a simple application:

<!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"    style="max-width:90%" 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.jb51.net" >jb51.net</a></p> 
    </div> 
</body> 
</html>
Copy after login

Use animate to control the background-position of the image to achieve the progress bar effect.
Of course you can also use the first method. What needs to be changed in the first method is the width attribute of the progress bar.

Summary:

Through the study of this article, I believe that my friends will have a better understanding of the method of implementing the progress bar in JavaScript. Each method They are all different, friends can choose the appropriate method according to their own needs!

Related recommendations:

JavaScript native code to implement progress bar


JS native upload large file display progress bar-php upload file


Example of JavaScript implementing progress bar based on timer

The above is the detailed content of Introduction to several methods of implementing progress bars in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template