【问题标题】:How I can center circle progress bar in bootstrap and css?如何在引导程序和 css 中居中圆形进度条?
【发布时间】:2017-07-01 12:12:59
【问题描述】:

<link href="http://www.cssscript.com/demo/circular-progress-bar-plain-html-css/css-circular-prog-bar.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="row">
      <div class="progress-circle p10">
        <span>10%</span>
        <div class="left-half-clipper">
          <div class="first50-bar"></div>
          <div class="value-bar"></div>
        </div>
      </div>
      <div class="progress-circle p20">
        <span>20%</span>
        <div class="left-half-clipper">
          <div class="first50-bar"></div>
          <div class="value-bar"></div>
        </div>
      </div>
      <div class="progress-circle p30">
        <span>30%</span>
        <div class="left-half-clipper">
          <div class="first50-bar"></div>
          <div class="value-bar"></div>
        </div>
      </div>
    </div>

我使用 bootstrap 3 和这个 circle progress bar。 我努力将 3 个进度条居中,但它继续向左。 添加边距,但它在移动网络中发生中断布局。 如何使三个进度条居中? 我想将 3 个进度条居中,并在 3 个进度条下添加文字。

result image

【问题讨论】:

    标签: html css twitter-bootstrap


    【解决方案1】:

    您需要使用一些 Bootstrap 的网格类来修复您的布局,特别是 col-sm-4center-block。请参阅下面的演示:

    /*https://github.com/jumpifzero/purecss-circular-progress-bar/blob/master/css-circular-prog-bar.css*/
    
    .progress-circle {
       font-size: 20px;
       margin: 20px;
       position: relative; /* so that children can be absolutely positioned */
       padding: 0;
       width: 5em;
       height: 5em;
       background-color: #F2E9E1; 
       border-radius: 50%;
       line-height: 5em;
    }
    
    .progress-circle:after{
        border: none;
        position: absolute;
        top: 0.35em;
        left: 0.35em;
        text-align: center;
        display: block;
        border-radius: 50%;
        width: 4.3em;
        height: 4.3em;
        background-color: white;
        content: " ";
    }
    /* Text inside the control */
    .progress-circle span {
        position: absolute;
        line-height: 5em;
        width: 5em;
        text-align: center;
        display: block;
        color: #53777A;
        z-index: 2;
    }
    .left-half-clipper { 
       /* a round circle */
       border-radius: 50%;
       width: 5em;
       height: 5em;
       position: absolute; /* needed for clipping */
       clip: rect(0, 5em, 5em, 2.5em); /* clips the whole left half*/ 
    }
    /* when p>50, don't clip left half*/
    .progress-circle.over50 .left-half-clipper {
       clip: rect(auto,auto,auto,auto);
    }
    .value-bar {
       /*This is an overlayed square, that is made round with the border radius,
       then it is cut to display only the left half, then rotated clockwise
       to escape the outer clipping path.*/ 
       position: absolute; /*needed for clipping*/
       clip: rect(0, 2.5em, 5em, 0);
       width: 5em;
       height: 5em;
       border-radius: 50%;
       border: 0.45em solid #53777A; /*The border is 0.35 but making it larger removes visual artifacts */
       /*background-color: #4D642D;*/ /* for debug */
       box-sizing: border-box;
      
    }
    /* Progress bar filling the whole right half for values above 50% */
    .progress-circle.over50 .first50-bar {
       /*Progress bar for the first 50%, filling the whole right half*/
       position: absolute; /*needed for clipping*/
       clip: rect(0, 5em, 5em, 2.5em);
       background-color: #53777A;
       border-radius: 50%;
       width: 5em;
       height: 5em;
    }
    .progress-circle:not(.over50) .first50-bar{ display: none; }
    
    
    /* Progress bar rotation position */
    .progress-circle.p0 .value-bar { display: none; }
    .progress-circle.p1 .value-bar { transform: rotate(4deg); }
    .progress-circle.p2 .value-bar { transform: rotate(7deg); }
    .progress-circle.p3 .value-bar { transform: rotate(11deg); }
    .progress-circle.p4 .value-bar { transform: rotate(14deg); }
    .progress-circle.p5 .value-bar { transform: rotate(18deg); }
    .progress-circle.p6 .value-bar { transform: rotate(22deg); }
    .progress-circle.p7 .value-bar { transform: rotate(25deg); }
    .progress-circle.p8 .value-bar { transform: rotate(29deg); }
    .progress-circle.p9 .value-bar { transform: rotate(32deg); }
    .progress-circle.p10 .value-bar { transform: rotate(36deg); }
    .progress-circle.p11 .value-bar { transform: rotate(40deg); }
    .progress-circle.p12 .value-bar { transform: rotate(43deg); }
    .progress-circle.p13 .value-bar { transform: rotate(47deg); }
    .progress-circle.p14 .value-bar { transform: rotate(50deg); }
    .progress-circle.p15 .value-bar { transform: rotate(54deg); }
    .progress-circle.p16 .value-bar { transform: rotate(58deg); }
    .progress-circle.p17 .value-bar { transform: rotate(61deg); }
    .progress-circle.p18 .value-bar { transform: rotate(65deg); }
    .progress-circle.p19 .value-bar { transform: rotate(68deg); }
    .progress-circle.p20 .value-bar { transform: rotate(72deg); }
    .progress-circle.p21 .value-bar { transform: rotate(76deg); }
    .progress-circle.p22 .value-bar { transform: rotate(79deg); }
    .progress-circle.p23 .value-bar { transform: rotate(83deg); }
    .progress-circle.p24 .value-bar { transform: rotate(86deg); }
    .progress-circle.p25 .value-bar { transform: rotate(90deg); }
    .progress-circle.p26 .value-bar { transform: rotate(94deg); }
    .progress-circle.p27 .value-bar { transform: rotate(97deg); }
    .progress-circle.p28 .value-bar { transform: rotate(101deg); }
    .progress-circle.p29 .value-bar { transform: rotate(104deg); }
    .progress-circle.p30 .value-bar { transform: rotate(108deg); }
    .progress-circle.p31 .value-bar { transform: rotate(112deg); }
    .progress-circle.p32 .value-bar { transform: rotate(115deg); }
    .progress-circle.p33 .value-bar { transform: rotate(119deg); }
    .progress-circle.p34 .value-bar { transform: rotate(122deg); }
    .progress-circle.p35 .value-bar { transform: rotate(126deg); }
    .progress-circle.p36 .value-bar { transform: rotate(130deg); }
    .progress-circle.p37 .value-bar { transform: rotate(133deg); }
    .progress-circle.p38 .value-bar { transform: rotate(137deg); }
    .progress-circle.p39 .value-bar { transform: rotate(140deg); }
    .progress-circle.p40 .value-bar { transform: rotate(144deg); }
    .progress-circle.p41 .value-bar { transform: rotate(148deg); }
    .progress-circle.p42 .value-bar { transform: rotate(151deg); }
    .progress-circle.p43 .value-bar { transform: rotate(155deg); }
    .progress-circle.p44 .value-bar { transform: rotate(158deg); }
    .progress-circle.p45 .value-bar { transform: rotate(162deg); }
    .progress-circle.p46 .value-bar { transform: rotate(166deg); }
    .progress-circle.p47 .value-bar { transform: rotate(169deg); }
    .progress-circle.p48 .value-bar { transform: rotate(173deg); }
    .progress-circle.p49 .value-bar { transform: rotate(176deg); }
    .progress-circle.p50 .value-bar { transform: rotate(180deg); }
    .progress-circle.p51 .value-bar { transform: rotate(184deg); }
    .progress-circle.p52 .value-bar { transform: rotate(187deg); }
    .progress-circle.p53 .value-bar { transform: rotate(191deg); }
    .progress-circle.p54 .value-bar { transform: rotate(194deg); }
    .progress-circle.p55 .value-bar { transform: rotate(198deg); }
    .progress-circle.p56 .value-bar { transform: rotate(202deg); }
    .progress-circle.p57 .value-bar { transform: rotate(205deg); }
    .progress-circle.p58 .value-bar { transform: rotate(209deg); }
    .progress-circle.p59 .value-bar { transform: rotate(212deg); }
    .progress-circle.p60 .value-bar { transform: rotate(216deg); }
    .progress-circle.p61 .value-bar { transform: rotate(220deg); }
    .progress-circle.p62 .value-bar { transform: rotate(223deg); }
    .progress-circle.p63 .value-bar { transform: rotate(227deg); }
    .progress-circle.p64 .value-bar { transform: rotate(230deg); }
    .progress-circle.p65 .value-bar { transform: rotate(234deg); }
    .progress-circle.p66 .value-bar { transform: rotate(238deg); }
    .progress-circle.p67 .value-bar { transform: rotate(241deg); }
    .progress-circle.p68 .value-bar { transform: rotate(245deg); }
    .progress-circle.p69 .value-bar { transform: rotate(248deg); }
    .progress-circle.p70 .value-bar { transform: rotate(252deg); }
    .progress-circle.p71 .value-bar { transform: rotate(256deg); }
    .progress-circle.p72 .value-bar { transform: rotate(259deg); }
    .progress-circle.p73 .value-bar { transform: rotate(263deg); }
    .progress-circle.p74 .value-bar { transform: rotate(266deg); }
    .progress-circle.p75 .value-bar { transform: rotate(270deg); }
    .progress-circle.p76 .value-bar { transform: rotate(274deg); }
    .progress-circle.p77 .value-bar { transform: rotate(277deg); }
    .progress-circle.p78 .value-bar { transform: rotate(281deg); }
    .progress-circle.p79 .value-bar { transform: rotate(284deg); }
    .progress-circle.p80 .value-bar { transform: rotate(288deg); }
    .progress-circle.p81 .value-bar { transform: rotate(292deg); }
    .progress-circle.p82 .value-bar { transform: rotate(295deg); }
    .progress-circle.p83 .value-bar { transform: rotate(299deg); }
    .progress-circle.p84 .value-bar { transform: rotate(302deg); }
    .progress-circle.p85 .value-bar { transform: rotate(306deg); }
    .progress-circle.p86 .value-bar { transform: rotate(310deg); }
    .progress-circle.p87 .value-bar { transform: rotate(313deg); }
    .progress-circle.p88 .value-bar { transform: rotate(317deg); }
    .progress-circle.p89 .value-bar { transform: rotate(320deg); }
    .progress-circle.p90 .value-bar { transform: rotate(324deg); }
    .progress-circle.p91 .value-bar { transform: rotate(328deg); }
    .progress-circle.p92 .value-bar { transform: rotate(331deg); }
    .progress-circle.p93 .value-bar { transform: rotate(335deg); }
    .progress-circle.p94 .value-bar { transform: rotate(338deg); }
    .progress-circle.p95 .value-bar { transform: rotate(342deg); }
    .progress-circle.p96 .value-bar { transform: rotate(346deg); }
    .progress-circle.p97 .value-bar { transform: rotate(349deg); }
    .progress-circle.p98 .value-bar { transform: rotate(353deg); }
    .progress-circle.p99 .value-bar { transform: rotate(356deg); }
    .progress-circle.p100 .value-bar { transform: rotate(360deg); }
    Contact GitHub API Training Shop Blog About
    © 2017 GitHub, Inc. Terms Privacy Security Status Help
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="row">
        <div class="col-sm-4">
            <div class="progress-circle p10 center-block">
                <span>10%</span>
                <div class="left-half-clipper">
                    <div class="first50-bar"></div>
                    <div class="value-bar"></div>
                </div>
            </div>
        </div>
        <div class="col-sm-4">
            <div class="progress-circle p20 center-block">
                <span>20%</span>
                <div class="left-half-clipper">
                    <div class="first50-bar"></div>
                    <div class="value-bar"></div>
                </div>
            </div>
        </div>
        <div class="col-sm-4">
            <div class="progress-circle p30 center-block">
                <span>30%</span>
                <div class="left-half-clipper">
                    <div class="first50-bar"></div>
                    <div class="value-bar"></div>
                </div>
            </div>
        </div>
    </div>

    【讨论】:

    • 谢谢你的回答:)
    【解决方案2】:

    示例 1:

    在进度条类.progress-circle 中使用display:inline-block。并将text-align:center 添加到父div

    .row{
        text-align:center;
    }
    
    .progress-circle{
        display:inline-block
    }
    

    示例 2:

    .progress-circle{
        display:block;
        margin: 0px auto;
    }
    

    【讨论】:

    • 感谢您的回答。如果我调整进度条空间,我调整progress-circle 的填充?
    • 您没有显示进度圈的 css 代码。所以我不知道你尝试了什么。但这是解决您的问题的最佳解决方案。
    【解决方案3】:

    将左右边距自动添加到进度圈类,如下所示:

    .progress-circle {
       margin-right: auto;
       margin-left: auto;
    }
    

    这不应该在移动设备上中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-12
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2021-12-10
      • 1970-01-01
      相关资源
      最近更新 更多