前言

一个好看的进度条会给用户更棒的操作体验,但是我搜索网上的进度条样式,并没有找到符合需求的进度条,为什么呢? 网上的进度条太粗,究其根本是linear-geadient在捣鬼。

普通进度条

一个普通进度条包括外边框、内边框、进度条和百分比框。以及它需要实现的动效,比如进度条需要从0开始增长,百分比框要随着进度条联动。


html:

// 外边框:宽,高,内边距,背景颜色,圆角
<div class="progress"> 
// 内边框:宽度,高度,边框border(宽度width、样式solid、颜色color、圆角border-radius),背景颜色
    <div class="progress-shadow">  
    // progress-bar(进度条基本样式):高度(宽度不需要),圆角(需与内边框圆角一致),阴影
    // progress-bar-striped(进度条条纹样式):
       背景颜色:background: linear-gradient(45deg, #f0c105 25%, #ffcd05 25%, #ffcd05 50%, #f0c105 50%, #f0c105 75%, #ffcd05 75%, #ffcd05);
       背景图片的尺寸:background-size: 40px 40px
    // progress-bar.active(进度条动画):
animation: ani1 0.8s linear infinite reverse;
        <div class="progress-bar progress-bar-striped active" style="width: 0%;">
            <div class="progress-value sp">0%</div>
        </div>        
    </div>
</div>
复制代码

animation:

@keyframes ani1{
    from {    background-position: 40px 0;   }
    to {    background-position: 0 0;   }
}
复制代码

了解了进度条的结构组成,层层嵌套并赋予class相应的样式后,一个进度条就出来了。虽然你看着很简单,但是调进度条条纹样式的时候真的非常折腾人,我这里分了 3段(25%、50%、75%),但是修改角度后整个图形会变得面目全非。在linear-gradient中,angle和percent之间存在某种关系;并且我这只是非常简单的分成3段,导致的结果就是进度条条纹还是太粗。



repeating-linear-gradient——密集进度条条纹样式的不二法门,密集恐惧症的苦口良药

只需要修改progress-bar-striped(进度条条纹样式):
@getRem: 16rem
背景颜色:background: repeating-linear-gradient(135deg,
                                    #f0c105, // 条纹颜色
                                    #f0c105 3.2/@getRem, // 条纹所占比例,这里是整个条纹的50%,既一半
                                    #ffcd05 0, //  条纹底色
                                    #ffcd05 6.4/@getRem );
背景图片的大小:background-size: 40px 40px;
复制代码



如果你想要再密一点,那么就这么做

background: repeating-linear-gradient(135deg,
                                    #f0c105, // 条纹颜色
                                    #f0c105 1.2/@getRem, // 条纹所占比例,这里是整个条纹的50%,既一半
                                    #ffcd05 0, //  条纹底色
                                    #ffcd05 2.4/@getRem );
background-size: 40px 40px;
复制代码



发现区别了么,就是把条纹底色的长度改为上面的一般,条纹颜色的长度 = 条纹底色/2