jquery – 引导进度条,渐变颜色与活动宽度成比例

前端之家收集整理的这篇文章主要介绍了jquery – 引导进度条,渐变颜色与活动宽度成比例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要制作一个由渐变颜色填充的Bootstrap进度条(让我们说红色到绿色)。我的CSS目前看起来像这样:
.progress-lf {
    position: relative;
    height: 31px;
    background-color: rgba(51,51,0.4)
}

.progress-lf span {
    position: absolute;
    display: block;
    font-weight: bold;
    color: #d2d2d2;
    width: 100%;
    top:6px;
}

.progress-lf .gradient {
    background-color: transparent;
    background-image: -ms-linear-gradient(left,#E34747 0%,#5FB365 100%);
    background-image: -moz-linear-gradient(left,#5FB365 100%);
    background-image: -o-linear-gradient(left,#5FB365 100%);
    background-image: -webkit-gradient(linear,left top,right top,color-stop(0,#E34747),color-stop(100,#5FB365));
    background-image: -webkit-linear-gradient(left,#5FB365 100%);
    background-image: linear-gradient(to right,#5FB365 100%);
}

和HTML一起去是这样的:

<div class="progress progress-lf">
            <div class="progress-bar gradient" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: <?PHP echo mt_rand(0,100);?>%;">
                    <span>60% Complete</span>
            </div>
    </div>

显示了梯度,但是对于上面的例子(60%),它显示整个渐变色谱在整个活动的60%区域。我需要改变这个(例如)60%,只显示60%的渐变色谱。

任何人有什么想法如何实现这一点?我更喜欢纯粹的CSS解决方案,但如果需要jQuery来实现这一点,那也是可以的。

解决方法

为了让你动态地改变’amount’,我建议使用jquery(或者是vanilla js,以优先选择)来调整进度条。

我已经使用了data-attribute来完成进度条的值以及文本(所以你只需要在一个地方更改它)。

这意味着你所要做的就是改变

data-amount

属性为0到100%之间的值。

演示

$(document).ready(function () {
    var dataval = parseInt($('.progress').attr("data-amount"));
    if (dataval < 100) {
        $('.progress .amount').css("width",100 - dataval + "%");
    }

  /*FOR DEMO ONLY*/
    $('#increase').click(function () {
        modifyProgressVal(1);
    });
    $('#decrease').click(function () {
        modifyProgressVal(-1);
    });
    function modifyProgressVal(type) {
        dataval = parseInt($('.progress').attr("data-amount"));
        if (type == 1) dataval = Math.min(100,dataval + 10)
        else if (type == -1) dataval = Math.max(0,dataval - 10);
        $('.progress .amount').css("width",100 - dataval + "%");
        $('.progress').attr("data-amount",dataval);
    }
});
.progress {
  position: relative;
  height: 31px;
  background: rgb(255,0);
  background: -moz-linear-gradient(left,rgba(255,1) 0%,rgba(0,255,1) 100%);
  background: -webkit-gradient(linear,color-stop(0%,1)),color-stop(100%,1)));
  background: -webkit-linear-gradient(left,1) 100%);
  background: -o-linear-gradient(left,1) 100%);
  background: -ms-linear-gradient(left,1) 100%);
  background: linear-gradient(to right,1) 100%);
  filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ff0000',endColorstr='#00ff00',GradientType=1);
}
.amount {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  transition: all 0.8s;
  background: gray;
  width: 0;
}
.progress:before {
  content: attr(data-amount)"% Complete";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 10;
  text-align: center;
  line-height: 31px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="progress" data-amount="80">
  <div class="amount"></div>
</div>


<!--FOR DEMO ONLY-->

<button id="increase">Increase by 10</button>
<button id="decrease">Decrease by 10</button>

这实际上只是使用两个元素,所以应该是相当不错的性能明智。

注意

在这个答案中似乎使用了很多jQuery。这是由于DEMO而不是实际使用。

原文链接:https://www.f2er.com/jquery/181932.html

猜你在找的jQuery相关文章