簡體   English   中英

Bootstrap 進度條顏色根據寬度值動態變化

[英]Bootstrap progress bar colour change according to width value dynamically

我創建了一個進度條。 正在從數據庫中獲取值。 現在我想對進度條的顏色進行分類,比如寬度值是否低於 50,所以進度條顏色為紅色。 如果值大於 50 且小於 90,則顏色為藍色,如果值為 100,則顏色為綠色。

進度條顯示在表格單元格中。 和值是從數據庫中獲取的

 <tr class="success"> <td><?php echo "$row->ID"; ?></td> <td><?php echo "$row->name"; ?></td> <td><div class="progress" style = "height:24px;width:200px"> <div class="progress-bar" id = "newprogress" role="progressbar" aria-valuenow="<?php echo "$row->Percentage"; ?>" style = "width :<?php echo "$row->Percentage"; ?>%";> <?php echo "$row->Percentage" ?>% </div> </div> <td>

因為我在這里嘗試了其中一種解決方案

 $(document).ready(function(){ var bar = parseInt($("#newprogress").width()); if (bar >= 90) { $("#newprogress").removeClass("bckColor").addClass("bar-success"); } else if (bar >= 50 && bar < 90) { $("#newprogress").removeClass("bar-success").addClass("bckColor"); } });

我認為您選擇了錯誤的元素。

 $(document).ready(function() { var bars = $('.progress-bar'); for (i = 0; i < bars.length; i++) { console.log(i); var progress = $(bars[i]).attr('aria-valuenow'); $(bars[i]).width(progress + '%'); if (progress >= "90") { $(bars[i]).addClass("bar-success"); } else if (progress >= "50" && progress < "90") { $(bars[i]).addClass("bar-warning"); } else { $(bars[i]).addClass("bar-error"); } } });
 .progress { width: 200px; height: 24px; border-radius: 10px; background-color: #F1F1F1; margin-bottom: 10px; } .progress-bar { border-radius: 10px; height: 24px; display: block; } .bar-warning { background-color: yellow; } .bar-success { background-color: green; } .bar-error { background-color: red; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="progress" style="heigt:24px;width:200px"> <div class="progress-bar" name="progress" role="progressbar" aria-valuenow="90"></div> </div> <div class="progress" style="heigt:24px;width:200px"> <div class="progress-bar" name="progress" role="progressbar" aria-valuenow="30"></div> </div> <div class="progress" style="heigt:24px;width:200px"> <div class="progress-bar" name="progress" role="progressbar" aria-valuenow="50"></div> </div>

試試下面的代碼。

$(document).ready(function(){

var bar = parseInt($('.progress').width());

    if (bar >= 90){


        $(".progress").removeClass("bckColor").addClass("success");
        }
    else if (bar >= 50){

        $(".progress").removeClass("success").addClass("bckColor");
        }
});



.bckColor {
    background-color: blue !important;
}

.success {
    background-color: green !important;
}

使用下面我命名為 sample.php 的代碼這里的值將從另一個文件 data.php 中收集並根據提供的條件更改顏色

使用語言:HTML、PHP、JS

示例.php

            <!DOCTYPE html>
            <html>
                <head>
                    <title></title>
                    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
                        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
                        <?php require_once('data.php'); ?>
                        <script>
                var myVar = setInterval(inter, 1000);
                function inter() {

                        document.getElementById("boot").style.width = 
                            <?php echo $x; ?>+"%";
                        document.getElementById("boot").innerHTML = 
                            <?php echo $x; ?>+"%";
                            if (
                            <?php echo $x; ?>< 90)
                            {
                                document.getElementById("boot").className = "progress-bar progress-bar-danger";
                            }
                             else
                             {
                                document.getElementById("boot").className = "progress-bar progress-bar-success";
                                }
            }


                        </script>
                    </head>
                    <body>
                        <table>
                            <td>
                                <div class="progress" style = "height:24px;width:200px">
                                    <div name="progress" role="progressbar" id="boot" aria-valuenow="
                                        <?php echo'$row->Percentage';?>" >
                                    </div>
                                </div>
                            </td>
                        </table>
                    </body>
                </html>

這是 data.php

結果:


當其 90% 或以上

當它 <80%

我意識到您在尋求 JavaScript 解決方案,但這可以(在某種程度上)在 PHP 中實現。

您已經在 PHP 腳本中使用變量來設置 HTML 輸出的值,那么為什么不為進度條的顏色做同樣的事情呢?

此示例使用默認的 Bootstrap 顏色,但您可以根據需要替換其他顏色:

    // Value retrieved from the database. This can be a percentage (which may be easier
    // to work with or just use the raw value depending on your needs)
    $valueFromDatabase = 9;

    // This will give us a green bar, 9% wide.

    // Use the switch command to set the output colour (using the Bootstrap 
    // default colours Primary, Warning, Danger, Success etc. Set these as you need.
    switch ($valueFromDatabase) {

        case ($valueFromDatabase <= 10):
            $bar_colour = "success";
        break;
        case (($valueFromDatabase > 10) && ($valueFromDatabase <= 30)):
            $bar_colour = "warning";
        break;
        case ($valueFromDatabase > 30):
            $bar_colour = "danger";
        break;
    }

    // Now we use $bar_colour to set the colour in the output below.
    // Width set to the value retrieved from the database

    echo "<div class='row'>\n
        <div class='col-md-12'>\n
            <h4>Your Progress Bar</h4>\n
            <div class='progress md-progress pos-rel' style='height:25px'>\n
                <div class='progress-bar progress-bar-$bar_colour progress-bar-striped' style='width:$valueFromDatabase%; height: 25px'>
                    <span style='line-height: 25px'>$valueFromDatabase%</span>
                </div>\n
            </div>\n
        </div>\n
        </div>\n";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM