Progress
Documentación y ejemplos para usar las barras de progreso personalizadas de Bootstrap, con soporte para barras apiladas, fondos animados y etiquetas de texto.
Nuevo markup en v5.3.0 — Hemos dejado de usar la estructura HTML anterior para las barras de progreso y la hemos reemplazado por una más accesible. La estructura anterior seguirá funcionando hasta v6. Mira qué ha cambiado en nuestra guía de migración.
Cómo funciona
Los componentes de progreso se construyen con dos elementos HTML, algo de CSS para
establecer el ancho, y algunos atributos. No usamos el elemento
<progress> de HTML5, lo que asegura que puedes apilar barras de progreso, animarlas,
y colocar etiquetas de texto sobre ellas.
- Usamos
.progresscomo contenedor para indicar el valor máximo de la barra de progreso. - El contenedor
.progresstambién requiere unrole="progressbar"y atributosariapara hacerlo accesible, incluyendo un nombre accesible (usandoaria-label,aria-labelledbyo similar). - Usamos el
.progress-barinterno puramente para la barra visual y la etiqueta. - El
.progress-barrequiere un estilo en línea, clase utilitaria o CSS personalizado para establecer su ancho. - Proporcionamos una clase especial
.progress-stackedpara crear múltiples barras de progreso apiladas.
Juntando todo, tienes los siguientes ejemplos.
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 0%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 100%"></div>
</div>
Tamaño de la barra
Ancho
Bootstrap proporciona un puñado de utilidades para
establecer el ancho. Según tus necesidades, estas pueden ayudar a configurar rápidamente el ancho del
.progress-bar.
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar w-75"></div>
</div>
Altura
Solo estableces un valor de height en el contenedor .progress,
por lo que si cambias ese valor, el .progress-bar interno se redimensionará automáticamente en
consecuencia.
<div class="progress" role="progressbar" aria-label="Example 1px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 1px">
<div class="progress-bar" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Example 20px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 20px">
<div class="progress-bar" style="width: 25%"></div>
</div>
Etiquetas
Agrega etiquetas a tus barras de progreso colocando texto dentro del
.progress-bar.
<div class="progress" role="progressbar" aria-label="Example with label" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 25%">25%</div>
</div>
Etiquetas largas
Ten en cuenta que por defecto, el contenido dentro del .progress-bar se
controla con overflow: hidden, por lo que no se desborda de la barra. Si tu barra de progreso es
más corta que su etiqueta, el contenido se recortará y puede volverse ilegible. Para cambiar este
comportamiento, puedes usar .overflow-visible de las utilidades de overflow.
Las etiquetas más largas que la barra de progreso pueden no ser totalmente accesibles
usando este método porque depende de que el color del texto tenga el ratio de contraste correcto con los
colores de fondo tanto del .progress como del .progress-bar. Ten cuidado al
implementar este ejemplo.
Si el texto puede superponerse a la barra de progreso, a menudo recomendamos mostrar la etiqueta fuera de la barra de progreso para mejor accesibilidad.
Fondos
Usa las clases utilitarias de fondo para cambiar la apariencia de las barras de progreso individuales.
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-success" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-info" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-warning" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-danger" style="width: 100%"></div>
</div>
Consejo de accesibilidad: Usar color para añadir significado solo
proporciona una indicación visual, que no se transmitirá a los usuarios de tecnologías de asistencia como
lectores de pantalla. Asegúrate de que el significado sea obvio por el contenido mismo (p. ej., el texto
visible con un suficiente
contraste de color) o se incluya mediante medios alternativos, como texto adicional oculto con la
clase .visually-hidden.
Si estás añadiendo etiquetas a barras de progreso con un color de fondo personalizado, asegúrate de establecer también un color de texto apropiado, para que las etiquetas sigan siendo legibles y tengan suficiente contraste. Recomendamos usar las clases helper de color y background.
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar text-bg-success" style="width: 25%">25%</div>
</div>
<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar text-bg-info" style="width: 50%">50%</div>
</div>
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar text-bg-warning" style="width: 75%">75%</div>
</div>
<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar text-bg-danger" style="width: 100%">100%</div>
</div>
Múltiples barras
Puedes incluir múltiples componentes de progreso dentro de un contenedor con
.progress-stacked para crear una sola barra de progreso apilada. Ten en cuenta que en este caso,
el estilo para establecer el ancho visual de la barra de progreso debe aplicarse a los elementos
.progress, en lugar de a los .progress-bar.
<div class="progress-stacked">
<div class="progress" role="progressbar" aria-label="Segment one" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100" style="width: 15%">
<div class="progress-bar"></div>
</div>
<div class="progress" role="progressbar" aria-label="Segment two" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
<div class="progress-bar bg-success"></div>
</div>
<div class="progress" role="progressbar" aria-label="Segment three" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
<div class="progress-bar bg-info"></div>
</div>
</div>
Rayado
Agrega .progress-bar-striped a cualquier .progress-bar para
aplicar un rayado mediante un degradado CSS sobre el color de fondo de la barra de progreso.
<div class="progress" role="progressbar" aria-label="Default striped example" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped" style="width: 10%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Success striped example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-success" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Info striped example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-info" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Warning striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-warning" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Danger striped example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-danger" style="width: 100%"></div>
</div>
Rayas animadas
El degradado rayado también puede animarse. Agrega .progress-bar-animated al
.progress-bar para animar las rayas de derecha a izquierda mediante animaciones CSS3.
<div class="progress" role="progressbar" aria-label="Animated striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 75%"></div>
</div>
CSS
Variables
Añadido en v5.2.0Como parte del enfoque evolutivo de variables CSS de Bootstrap, las barras de progreso
ahora usan variables CSS locales en .progress para una personalización en tiempo real mejorada.
Los valores de las variables CSS se establecen vía Sass, por lo que la personalización con Sass también sigue
siendo compatible.
--#{$prefix}progress-height: #{$progress-height};
@include rfs($progress-font-size, --#{$prefix}progress-font-size);
--#{$prefix}progress-bg: #{$progress-bg};
--#{$prefix}progress-border-radius: #{$progress-border-radius};
--#{$prefix}progress-box-shadow: #{$progress-box-shadow};
--#{$prefix}progress-bar-color: #{$progress-bar-color};
--#{$prefix}progress-bar-bg: #{$progress-bar-bg};
--#{$prefix}progress-bar-transition: #{$progress-bar-transition};
Variables Sass
$progress-height: 1rem;
$progress-font-size: $font-size-base * .75;
$progress-bg: var(--#{$prefix}secondary-bg);
$progress-border-radius: var(--#{$prefix}border-radius);
$progress-box-shadow: var(--#{$prefix}box-shadow-inset);
$progress-bar-color: $white;
$progress-bar-bg: $primary;
$progress-bar-animation-timing: 1s linear infinite;
$progress-bar-transition: width .6s ease;
Keyframes
Usado para crear las animaciones CSS de .progress-bar-animated. Incluido en
scss/_progress-bar.scss.
@if $enable-transitions {
@keyframes progress-bar-stripes {
0% { background-position-x: var(--#{$prefix}progress-height); }
}
}