• 超赞的CSS3进度条 可以随进度显示不同颜色


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

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

    同时,我们也可以在这里看到进度条的DEMO演示

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

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

    <div id="wrapper">
    <div class="loader-container">
      <div class="meter">0</div>
      <span class="runner"></span>
    </div>
    </div>

    首先我们来对进度条的容器进行样式渲染,利用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
    });

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

  • 相关阅读:
    P2515 [HAOI2010]软件安装
    P2502 [HAOI2006]旅行 最小生成树
    Luogu P2511 [HAOI2008]木棍分割 二分+DP
    P2303 [SDOI2012]Longge的问题 我傻QwQ
    P1129 [ZJOI2007]矩阵游戏 二分图匹配
    BZOJ3211花神游历各国
    [HNOI2011]XOR和路径
    NOIP考前划水
    [IOI2018]组合动作
    [NOIP2017]逛公园
  • 原文地址:https://www.cnblogs.com/html5tricks/p/3655767.html
Copyright © 2020-2023  润新知