Tengo un problema que parece que no puedo solucionar.
He creado una barra de progreso en una aplicación Symfony con Bootstrap instalado. Estoy usando el siguiente código para mostrar la barra:
<link href="https://bootswatch.com/5/sketchy/bootstrap.min.css" rel="stylesheet"/> <div class="progress"> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar"></div> </div>Quiero superponer las barras para mostrar tres valores diferentes. Así por ejemplo:
Entonces eso se puede lograr con la siguiente configuración:
<link href="https://bootswatch.com/5/sketchy/bootstrap.min.css" rel="stylesheet"/> <div class="progress"> <div style="width:200%" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar"></div> </div>Pero, ¿cómo mostraría, por ejemplo, lo siguiente:
Necesito una función para determinar el ancho de las tres barras para mostrar mis valores deseados. Entonces podría agregar el valor de ancho a través de javascript.
document.getElementById("red").style.width = "30%"; document.getElementById("green").style.width = "70%"; document.getElementById("blue").style.width = "100%"; <link href="https://bootswatch.com/5/sketchy/bootstrap.min.css" rel="stylesheet"/> <div class="progress"> <div id="red" style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar"></div> <div id="green" style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"></div> <div id="blue" style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar"></div> </div> <script type="text/javascript" src="script.js"></script>Algo como ??
La siguiente función setWidth() cambiará automáticamente el ancho. Simplemente pase sus valores deseados como argumentos. No necesitas hacer nada. Simplemente llame a esta función así => setWidth(30, 70, 100)
function setWidth(...arg) { let widths = Array.from(document.querySelectorAll('.progress>div')) .forEach((el, i) => el.style.width = (arg[i] - (arg[i - 1] ? arg[i - 1] : 0)) + "%") } setWidth(30, 70, 100) <link href="https://bootswatch.com/5/sketchy/bootstrap.min.css" rel="stylesheet" /> <div class="progress"> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"></div> <div style="width:100%" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar"></div> </div>